원클릭으로
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
You MUST use this before exploring a feature idea, behavior change, or architecture direction. Refines user intent, requirements, and design before implementation.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
Use when implementation is complete and release notes, changelog, TODO, or handoff documentation need a release-quality pass before merge
Use when you have an engineering-approved FeatureForge implementation plan and need to execute it in a separate session
Use when implementation is complete, verification passes, and you need to decide how to integrate the work through merge, PR, or cleanup
Use when a written FeatureForge design or architecture spec needs CEO or founder review before implementation planning, including scope expansion, selective expansion, hold-scope rigor, or scope reduction
| name | writing-skills |
| description | Use when creating new skills, editing existing skills, or verifying skills work before deployment |
_REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
_BRANCH_RAW=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo current)
[ -n "$_BRANCH_RAW" ] && [ "$_BRANCH_RAW" != "HEAD" ] || _BRANCH_RAW="current"
_BRANCH="$_BRANCH_RAW"
_FEATUREFORGE_INSTALL_ROOT="$HOME/.featureforge/install"
_FEATUREFORGE_BIN="$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge"
if [ ! -x "$_FEATUREFORGE_BIN" ] && [ -f "$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge.exe" ]; then
_FEATUREFORGE_BIN="$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge.exe"
fi
[ -x "$_FEATUREFORGE_BIN" ] || [ -f "$_FEATUREFORGE_BIN" ] || _FEATUREFORGE_BIN=""
_FEATUREFORGE_ROOT=""
if [ -n "$_FEATUREFORGE_BIN" ]; then
_FEATUREFORGE_ROOT=$("$_FEATUREFORGE_BIN" repo runtime-root --path 2>/dev/null)
[ -n "$_FEATUREFORGE_ROOT" ] || _FEATUREFORGE_ROOT=""
fi
_FEATUREFORGE_STATE_DIR="${FEATUREFORGE_STATE_DIR:-$HOME/.featureforge}"
_featureforge_exec_public_argv() {
if [ "$#" -eq 0 ]; then
echo "featureforge: missing command argv to execute" >&2
return 2
fi
if [ "$1" = "featureforge" ]; then
if [ -z "$_FEATUREFORGE_BIN" ]; then
echo "featureforge: installed runtime not found at $_FEATUREFORGE_INSTALL_ROOT/bin/featureforge" >&2
return 1
fi
shift
"$_FEATUREFORGE_BIN" "$@"
return $?
fi
echo "featureforge: refusing non-featureforge public argv: $1" >&2
return 2
}
This skill does not own live workflow routing. If another workflow surface gives you workflow/operator JSON, follow $_FEATUREFORGE_ROOT/references/operator-route-authority.md instead of reconstructing route law here.
Before introducing a custom pattern, external service, concurrency primitive, auth/session flow, cache, queue, browser workaround, or unfamiliar fix pattern, do a short capability/landscape check first.
Use three lenses, then decide from local repo truth:
External search results are inputs, not answers. Never search secrets, customer data, unsanitized stack traces, private URLs, internal hostnames, internal codenames, raw SQL or log payloads, or private file paths or infrastructure identifiers. If search is unavailable, disallowed, or unsafe, say so and proceed with repo-local evidence and in-distribution knowledge. If safe sanitization is not possible, skip external search.
See $_FEATUREFORGE_ROOT/references/search-before-building.md.
For every interactive user question, use this structure:
RECOMMENDATION: Choose [X] because [one-line reason]A) ... B) ... C) ...Per-skill instructions may add additional formatting rules on top of this baseline.
Writing skills is test-driven development for process documentation. Write a pressure scenario first, watch the agent fail without the skill, write only the guidance needed to fix that failure, then retest under pressure.
Personal local-install skills live in ~/.agents/skills/ for Codex and ~/.copilot/skills/ for GitHub Copilot. In this repo, generated skill docs live under skills/<skill>/SKILL.md; when a matching SKILL.md.tmpl exists, edit the template and regenerate instead of hand-editing generated output.
Load these only when their detail is needed:
$_FEATUREFORGE_ROOT/skills/writing-skills/codex-best-practices.md: Codex-specific authoring guidance and examples.$_FEATUREFORGE_ROOT/skills/writing-skills/copilot-best-practices.md: GitHub Copilot local-install compatibility notes.$_FEATUREFORGE_ROOT/skills/writing-skills/testing-skills-with-subagents.md: full RED/GREEN/REFACTOR pressure-test methodology.$_FEATUREFORGE_ROOT/skills/writing-skills/persuasion-principles.md: rationale for discipline-enforcing wording.$_FEATUREFORGE_ROOT/skills/writing-skills/graphviz-conventions.dot and $_FEATUREFORGE_ROOT/skills/writing-skills/render-graphs.js: optional flowchart style and rendering helpers.Create or update a skill when the guidance is reusable, non-obvious, and applies across tasks or projects. Do not create skills for one-off fixes, project-specific conventions that belong in AGENTS.md, or mechanical rules that should be enforced by tests, linters, schemas, or scripts.
Skill types:
Every skill directory must be easy to package and discover:
skills/
skill-name/
SKILL.md
supporting-file.*
SKILL.md must start with YAML frontmatter containing only:
name: lowercase letters, numbers, and hyphens.description: third-person trigger text that starts with Use when...; describe when to load the skill, not the workflow it will follow.Keep the body scan-friendly:
Treat top-level SKILL.md content as expensive context. Keep mandatory trigger law and terminal decisions top-level; move long examples, rationale, and reference tables into companion files.
Default budget rules:
skills/skill-doc-budgets.json.@path links for ordinary references; they force-load files and waste context.Before adding a long section, ask: Does the agent need this immediately, or can it be a companion reference loaded on demand?
For FeatureForge generated skills:
skills/<skill>/SKILL.md.tmpl when it exists.node scripts/gen-skill-docs.mjs.node scripts/gen-skill-docs.mjs --check.SKILL.md, companion files, and tests together.Never hand-edit generated SKILL.md output while leaving its template stale.
Keep Codex and GitHub Copilot behavior aligned:
skills/ and install/link them into each platform's discovery path.$_FEATUREFORGE_ROOT.See the Codex and Copilot companion references for platform-specific details.
The iron law: no new skill or material skill edit without a failing pressure scenario first.
RED:
GREEN:
REFACTOR:
Use $_FEATUREFORGE_ROOT/skills/writing-skills/testing-skills-with-subagents.md for full scenario design, pressure types, and rationalization-table examples.
Choose tests that match the skill type:
For repo-owned generated skills, also run the relevant Node doc tests. If a skill controls runtime, review, or workflow gates, add contract tests that fail when mandatory law is moved entirely into companion docs.
name and description satisfy the frontmatter rules.Stop after each skill and complete this checklist before starting another skill.
SKILL.md when a companion file would preserve context.Bottom line: a good skill is small, discoverable, packaged, tested, and hard to rationalize around.