docs/commands/skills.md
Manage Codex/Claude skills for the current project.
Skills live in .ai/skills/ and are symlinked to .codex/skills and .claude/skills so active agent sessions can discover them.
# List local skills
f skills
# Create/edit/remove skills
f skills new <name> -d "description"
f skills edit <name>
f skills remove <name>
# Install curated skills
f skills install <name>
# Generate one skill per flow.toml task
f skills sync
# Force Codex app-server to rescan skills for this cwd
f skills reload
Use this loop when coding with Codex/Claude:
bun bd test ...).f skills sync
f skills reload
f commit
f skills reload is useful for already-open Codex sessions; it refreshes the app-server skill cache without creating a new session.
flow.toml Settings[skills]
sync_tasks = true
install = ["quality-bun-feature-delivery"]
[skills.codex]
generate_openai_yaml = true
force_reload_after_sync = true
task_skill_allow_implicit_invocation = false
Flow auto-materializes a small baseline set of project-local skills in .ai/skills/:
envquality-bun-feature-deliverypr-markdown-body-fileThese are symlinked into .codex/skills and .claude/skills and can be reloaded with:
f skills reload
skills.codex fieldsgenerate_openai_yaml: writes .ai/skills/<task>/agents/openai.yaml for task-synced skills.force_reload_after_sync: after f skills sync or f skills install, force Codex app-server skills/list with forceReload: true.task_skill_allow_implicit_invocation: default policy.allow_implicit_invocation value in generated agents/openai.yaml.[commit.testing]
mode = "block"
runner = "bun"
bun_repo_strict = true
require_related_tests = true
ai_scratch_test_dir = ".ai/test"
run_ai_scratch_tests = true
allow_ai_scratch_to_satisfy_gate = false
max_local_gate_seconds = 20
[commit.skill_gate]
mode = "block"
required = ["quality-bun-feature-delivery"]
[commit.skill_gate.min_version]
quality-bun-feature-delivery = 2
This blocks commits that skip required Bun-oriented testing/skill policy.