Repository navigation
docs: add projex agent skill (skills/projex) - #40
Conversation
End-user agent skill teaching any coding agent to drive Projex end-to-end: init (incl. --github auto-discovery, non-interactive paths), components/themes + page wiring, content ops via flags, projex.config.ts field reference, provider env vars, and troubleshooting. Every flag and example verified against live --help output and source of @manningworks/projex v1.6.0 (2026-10-12). Full raw --help drift baseline in skills/projex/references/cli-help.md.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Review: spec-conformance + accuracy pass (reviewer)Verdict: NEEDS-EDITS — 2 MEDIUM (one-line doc omissions on the accuracy promise), 2 LOW (non-blocking). No HIGH drift found. Every documented flag, default, message, exit code, and example was checked against a fresh MEDIUM (required changes)
LOW (non-blocking)
Verified accurate (spot-check evidence)
Well done on the drift-baseline approach — it made this review a diff, not a re-derivation. The two MEDIUMs are the kind only a second reader catches; both are one-line fixes. |
Re-review: APPROVE ✅Re-verified the fix commit
Diff vs No blocking findings. Merge tail to fire. |
Summary
Adds
skills/projex/— an end-user agent skill that teaches any codingagent (Hermes, Claude Code, or anything that reads
SKILL.md) to drive Projexin its own site end-to-end, with zero prior Projex knowledge.
skills/projex/SKILL.md(442 lines) — all six spec-locked sections:--githubauto-discovery(including the
git config user.nameusername source),--yes/-isemantics, auto-install side effect
destinations, the verified Next.js page wiring pattern
(
defineProjectsreturns{ projects, options },normalise()pipeline),compound component API,
data-projex-*styling hooksadd project(per-type flag table),add learning/challenge/timeline/post,edit(incl.--no-featured,--unsetrules),remove(incl.--force,--index),list— with theexact flags that keep every operation non-interactive
(
github, npm, youtube, gumroad, lemonsqueezy, product-hunt, devto, manual, hybrid), lifecycle statuses, featured, links, linkOrder, stats,defineProjectsoptionsGITHUB_TOKEN,DEV_TO_API_KEY,PRODUCT_HUNT_TOKEN,YOUTUBE_TOKEN,GUMROAD_TOKEN,LS_TOKEN(incl. the
LS_TOKENnaming trap), build-time semanticsinit --githubnull-validation failure, cancelled-prompt exit-code trap, auto-install
failures, the component-copy bug, ESM-only import semantics
skills/projex/references/cli-help.md— drift baseline: full raw--helpoutput for every command + 14 verified behavioral notes, captured2026-10-12 from
@manningworks/projexv1.6.0, re-captured and diffedbyte-identical against the current branch head.
Accuracy
Every flag, default, and example was verified this session against live
--helpoutput and by executing the built CLI (pnpm build, then athrowaway Next.js-style sandbox): init scaffold,
init --github -y(realoctocat fetch), every add/edit/remove/list recipe, component/theme copy, and
the full
defineProjects → normalise → rendered projectpipeline with liveGitHub data. The skill is self-contained; nothing critical points at the docs
site.
No CLI code, AGENTS.md, README.md, or release-process files are touched.
Agent-usability gaps found (documented in the skill; NOT fixed here — CLI changes out of scope)
init --githubgenerates a config that fails validation.Generated entries contain
background: null/why: null, but thedefineProjectsschema isz.string().optional()(non-nullable), so anyimport of the generated config throws
Validation failed ... received null. Fix candidate: emitbackground/whyas strings or omit them ingenerateGitHubConfig()(packages/core/src/commands/init.ts). Verifiedby reproduction; deleting the two lines makes the config validate and the
normalise()pipeline works.projex add <component>copies no runtime code from thepublished package.
getSourceFiles()filters.tsx/.ts, but thepublished dist ships compiled
.js+.d.ts— the copiedcomponents/projex/<Name>/directory contains.d.tsfiles only, so theimport the CLI prints (
import { ProjectCard } from './components/projex/ProjectCard')fails at build. Workaround documented:
import { ... } from '@manningworks/projex'(verified, 53 exports).add projectis not fully non-interactive without--stackand
--featured. Omitting either triggers an interactive prompt thatcancels in a non-TTY shell. There is no
--no-featuredonadd(edit-only), so non-featured projects need add-with-
--featured+edit --no-featured.--stack ""works as the empty-stack workaround(verified).
add postprompts for--urleven though it is "optional" —omitting it cancels non-interactively and adds nothing.
✖ Cancelled.— exit codes areunreliable for agents; the skill instructs verifying
✓lines / file state.init --github -yderives the GitHub username fromgit config user.name— a full name yields "GitHub user not found" orthe wrong user's repos. The skill instructs setting
git config user.name <handle>first.init/addrun a barenpm install/pnpm add/yarn add(no--legacy-peer-deps); peer-depconflicts fail the command, and
initprints✖ Failed to create projex.config.tseven though the file was written.exports["."]has animportcondition only (no
require/default), and internals use directoryimports; raw Node/CJS cannot import it (fine for Next.js).
projects.map(...)butdefineProjects()returns{ projects, options }— the docs-site pattern (destructure +
normalise()) is the working one(verified). README is owned by another card; flagging only.