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 reloadUse this loop when coding with Codex/Claude:
- Make code changes.
- Run focused tests quickly (in Bun repos:
bun bd test ...). - Refresh skill context:
f skills sync
f skills reload- Commit via quality gates:
f commitf skills reload is useful for already-open Codex sessions; it refreshes the app-server skill cache without creating a new session.
[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 = falseFlow auto-materializes a small baseline set of project-local skills in .ai/skills/:
envquality-bun-feature-deliverypr-markdown-body-file
These are symlinked into .codex/skills and .claude/skills and can be reloaded with:
f skills reloadgenerate_openai_yaml: writes.ai/skills/<task>/agents/openai.yamlfor task-synced skills.force_reload_after_sync: afterf skills syncorf skills install, force Codex app-serverskills/listwithforceReload: true.task_skill_allow_implicit_invocation: defaultpolicy.allow_implicit_invocationvalue in generatedagents/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 = 2This blocks commits that skip required Bun-oriented testing/skill policy.