This public repository owns portable end-user skills for the released Fallow product. It does not own Fallow maintainer workflows, private cloud knowledge, or public user documentation.
- Skill content lives under
fallow/skills/. - Each skill listed in
source-lock.jsonfollows the pinned public product contract. The lock has one entry per released Fallow skill. Each entry has a source root, a target root, and transforms. cargo-fallow-source-lock.jsonpins thecargo-fallowskill fromfallow-rs/cargo-fallowin the same shape. Run the check with--lock cargo-fallow-source-lock.json.- Skills that no lock lists, such as
fallow-review, belong to this repository. The source contract check ignores them. - Agent-specific interface files may wrap a skill, but must not fork its authored instructions.
codex-app/holds the source of the Fallow app for Codex: an MCP server and an MCP App that use the OpenAI MCP extensions.npm run buildthere writes the bundled output tofallow/codex-app/, which is committed because a plugin install runs no build step. CI rebuilds it and fails on a difference. Never editfallow/codex-app/by hand. Seecodex-app/README.md.agent-view/holds the TypeScript core that the Codex app and the Claude Code mod share: contracts, normalization, the view model offallow inspect --cloud, and one fixture set. It imports nonode:module.npm testincodex-app/runs its tests.claude-mod/holds the source of the Fallow mod for Claude Code. It does not ship in the plugin yet, because Codex refuses themoduleskey infallow/hooks/hooks.json.npm testthere needs Claude Code; it runsclaude plugin validateandclaude plugin teston a staged copy.- The OpenAI directory submission stays skills-only.
fallow/.codex-plugin/skills-only.jsontellsscripts/plugin_release.pywhich manifest fields and skills to leave out of that ZIP. - Public user guidance belongs in
fallow-rs/docs. - Open-source maintainer workflows belong in
fallow-rs/fallow.
Run:
node --test scripts/*.test.mjs
python3 -m unittest discover -s scripts -p 'test_*.py'
python3 scripts/validate_skill_frontmatter.py .
(cd codex-app && npm ci && npm run check)
(cd claude-mod && npm ci && npm run check && npm test)
FALLOW_SOURCE_DIR=/path/to/pinned/fallow node scripts/check-source-contract.mjs
CARGO_FALLOW_SOURCE_DIR=/path/to/pinned/cargo-fallow node scripts/check-source-contract.mjs --lock cargo-fallow-source-lock.jsonThe source contract check fails closed when the pinned source is absent, incorrect, or has drifted. Never copy private content or machine-local paths into this repository.
Keep skills concise, use progressive disclosure through direct references, and require a dry run before destructive Fallow operations.
Write code comments, docs, commit messages, PR text, and changelog entries
for a reader who did not see the session. Do not put the conversation, the
prompt, discarded attempts, or the edit history into them. Describe the code
as it is now. For a regression, state what breaks without the code, and link
the issue. scripts/check-comment-quality.mjs blocks narration and history
comments in the .githooks/pre-commit hook, in the Validate CI workflow,
and in Claude edits.
A task is done only when all of these are true:
- every pull request of the task is merged to
main, and the CI of the merged commit is green; - every companion pull request in another repository is merged;
- every follow-up that the work found is fixed, or has a GitHub issue that the final report links;
- the touched branches and worktrees are clean.
An open pull request is not done. This is also true while CI runs. A note in a scratch file or in the chat report does not track a follow-up. When a merge is blocked, report the pull request, the blocker, and the next action.
Sign each commit with git commit -S -s. The DCO check requires the sign-off.