Skip to content

yes506/ai-driven-items

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

85 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ai-driven-items

English ยท ํ•œ๊ตญ์–ด


English

A collection of AI-driven developer utilities for the Claude Code ecosystem โ€” skills, agents, MCP servers, and playbooks. Each utility is self-contained, validated against the official Claude Skills standard, and portable to other AI coding tools (Codex CLI, Gemini CLI, GitHub Copilot, Cursor) with light adaptation.

This README is the item index for the repo. Items are grouped by type below; per-tool install instructions follow.

Item index

Skills

Skill What it does
project-scaffolder Language-agnostic project bootstrapping. Walks intent โ†’ 2-4 tech-stack options โ†’ scaffolded baseline (lint, test, logging, config, CI stub, health endpoint). Runs entirely inside an isolated git worktree and merges back to dev only after explicit user confirmation. Tier-1 stacks: Next.js, Spring Boot, FastAPI, Go, Node/Express.
intent-aligner Head of the planning chain โ€” and now bidirectional with seed-gatherer. Extracts what's actually in the user's head before any planning starts: an interactive elicitation dialog (Socratic loops + 5 Whys + example/counter-example disambiguation) auto-detects whether the user brings a feature/product idea or a problem/pain, then iterates until intent converges. Emits a dual-format artifact โ€” intent.<slug>.md (structured AI-parseable seed) and intent.<slug>.html (static, self-contained, human-verifiable). Stack-, planner-, and lane-agnostic: the file's 6 rubric-aligned fields (Goal, In-scope features, Out-of-scope, Constraints, Success criteria, Open questions) are directly readable by codebase-planner. Two invocations: /intent-aligner for first capture (create mode, revision 1), and /intent-aligner update <slug> for refinement from accumulated seeds โ€” the seedโ†’intent feedback loop that lets intent grow more solid before planning. Update mode loads existing intent + globs seeds/seed.<slug>.*.md, proposes per-field refinements with seed-backed citations, bumps the revision (Revision: N), and merges with marker (intent, updated-from-seeds, human-confirmed). Downstream seed-gatherer collects evidence, plan-establisher folds intent + seeds into plan.<intent-slug>.v<N>.md. Create-mode marker: (intent, human-confirmed). Manual invocation only โ€” /intent-aligner or /intent-aligner update <slug>.
seed-gatherer Bidirectional with intent-aligner in the planning chain. Standard path: reads existing intent.<slug>.md and grows an evidence corpus from user-supplied URLs / YouTube / PDFs / images / local docs/code; each resource is intent-filtered into an md+html seed pair under seeds/seed.<intent-slug>.<resource-slug>.{md,html} with source provenance + relevance rationale. Bootstrap path: when no intent.md exists, the user supplies a starting prompt / URL / file and the skill captures intent ad-hoc (revision 1, marked Bootstrapped by: seed-gatherer), emitting intent.md + intent.html alongside seeds in a single merge โ€” marker (intent+seeds, bootstrap, human-confirmed). Ideation path: when the user has no external material, AI/user back-and-forth dialogue plus feasibility checks (WebSearch, local code grep, reference doc lookup) crystallize one seed per accepted idea โ€” marker (seeds, ideation, human-confirmed). Bootstrap and ideation compose. Pre-fetch proceed gates protect against accidentally-pasted URLs in both bootstrap and standard intake. Iteratively re-runnable across worktree+merge cycles with 3-case collision disambiguation. Feeds plan-establisher; refinement of the bootstrapped intent flows back to /intent-aligner update <slug>. Manual invocation only โ€” /seed-gatherer.
plan-establisher Sits between seed-gatherer and the downstream planners โ€” codebase-planner (for code) and document-planner (for documents). Reads intent.<slug>.md (required) and seeds/seed.<intent-slug>.*.md (optional), runs 4 verification dimensions (intent self-consistency, seeds-vs-intent, seeds-vs-seeds, planner-rubric completeness), resolves ambiguities via interactive Socratic dialog (per-finding (d) Defer or batch accept remaining), then emits a folded planner-ready plan.<intent-slug>.v<N>.md + .html at the repo root. The downstream planner reads ONLY the plan; intent.md + seeds/ become raw source material the planner doesn't re-read. Includes a proposed scale lane (micro / local / feature / system) with reasoning + an Evidence inventory mapping rubric fields โ†’ contributing seeds. Iteratively re-runnable โ€” each invocation emits the next monotonic version (v1, v2, ...) with prior versions preserved as audit trail; Phase 5 race-guard re-scans for parallel runs. Runs inside a git worktree and merges to dev only after confirm merge; marker (plan, human-confirmed) keeps the chain visible in git log. Manual invocation only โ€” /plan-establisher.
codebase-planner Decides how much planning a code change needs, then runs only the phases that lane requires. Four scale lanes: micro (one-function, 3โ€“7 bullet chat plan, no worktree), local (โ‰ค3 files / 1 module, chat plan), feature (worktree + plan.md + Mermaid DAG, optional skeletons), system (full interface-skeleton workflow inherited verbatim from the prior codebase-architect skill โ€” worktree + 9-field docstrings + Mermaid DAG + HTML report + human-confirmation merge gate). Lane is picked by a scored tuple (scope, risk, ambiguity) before any mutation; ambiguous requests block-and-ask rather than silently over-engineer. Downstream implementer agents read a scale-tagged marker family (see codebase-implementer below). Manual invocation only โ€” /codebase-planner.
codebase-implementer Downstream half of the plannerโ†’implementer chain. Reads the planner's scale-tagged, human-confirmed marker from chat (micro/local) or merge commit (feature/system), creates its own git worktree, then runs an autonomous implementation loop across all phases (no per-step prompts; only pause is a genuine blocker like a missing collaborator). Generates method bodies from 9-field docstrings (system) or plan steps (feature) or bullets (micro/local), runs the project's compile+test command with bounded auto-fix (default 3 attempts, oscillation-detected), emits an implementation-report.md for review, and merges to the base branch (default dev) only after the user types confirm merge. Language-agnostic. Body-generation only โ€” refuses to re-architect, refactor, or rename committed signatures. Manual invocation only โ€” /codebase-implementer.
document-planner The document-shaped sibling of codebase-planner. Decides how much planning a document needs, then runs only the phases that lane requires โ€” same four scale lanes (micro / local / feature / system) and same (scope, risk, ambiguity) triage, but axes are re-grounded in document semantics (scope = content volume, risk = accuracy / compliance, ambiguity = unresolved claims/evidence/audience). First-class DOCTYPE classification picks one of api-spec / tech-spec / runbook / ppt and drives the stub primitive (per-endpoint / per-section / per-step / per-slide) and the eventual output stack (text for markdown doctypes; structured for pptx). Heavy lanes emit a 9-field stub schema (## stub: <id> + YAML body โ€” id, purpose, audience, key claims, evidence sources, dependencies, acceptance criteria, length budget, open questions) plus a Mermaid dependency DAG and self-contained HTML preview. Bundled validators check structure (DFS cycle detection), internal-ref resolution ([[stub-id]]), and undeclared-dependency catches at the render step. Marker family (document-plan-<scale>, human-confirmed) is a fresh choice โ€” does NOT inherit codebase-planner's legacy (interfaces only, โ€ฆ) system marker. Manual invocation only โ€” /document-planner.
document-implementer Downstream half of the document-planner โ†’ document-implementer pair. Reads the planner's (document-plan-<scale>, human-confirmed) handoff (frontmatter at the top of document-plan.md for feature/system; chat-handoff block for micro/local with explicit chronological pairing rules for revise cycles), creates its own git worktree, then runs an autonomous generation loop in source order โ€” text doctypes (api-spec / tech-spec / runbook) write markdown directly to TARGET_PATH with explicit <a id="<stub-id>"></a> anchors before each section heading; structured (ppt) accumulates per-slide content in state and renders via bundled render_pptx.py (with stub-id provenance injected into each slide's speaker notes). Bounded auto-fix at Phase 4 (text=3 attempts; structured=0 โ€” pptx failures are rarely LLM-fixable). Phase 5 self-verification report includes an explicit per-stub acceptance-criteria checklist the human reviewer ticks before confirm merge lands the merge with marker (document-impl-<scale>, human-confirmed). Mirror discipline with planner-side parse_frontmatter.py (planner is canonical). Manual invocation only โ€” /document-implementer.
collect-searches Two-stage Chrome-search-history โ†’ Obsidian pipeline. Stage 1 is a deterministic Python collector (scripts/collect.py) that reads Chrome's local SQLite history, owns the cursor and lock, and stages new Google searches as JSON in a vault inbox. Stage 2 is a prompt-orchestrated workflow that classifies each query into an Obsidian category folder, enriches it with 1โ€“3 WebSearch sources, and writes one Markdown note per search. Designed for periodic runs (e.g. /loop 6h /collect-searches). Has side effects (writes notes, deletes inbox files on success); manual invocation only โ€” /collect-searches.

Agents

(planned โ€” none shipped yet)

MCP servers

(planned โ€” none shipped yet)

Playbooks

(planned โ€” none shipped yet)

Repository layout

ai-driven-items/
โ”œโ”€โ”€ skills/             Claude Code skills (procedural workflows + bundled resources)
โ”‚   โ”œโ”€โ”€ project-scaffolder/
โ”‚   โ”œโ”€โ”€ intent-aligner/
โ”‚   โ”œโ”€โ”€ seed-gatherer/
โ”‚   โ”œโ”€โ”€ plan-establisher/
โ”‚   โ”œโ”€โ”€ codebase-planner/
โ”‚   โ”œโ”€โ”€ codebase-implementer/
โ”‚   โ”œโ”€โ”€ document-planner/
โ”‚   โ”œโ”€โ”€ document-implementer/
โ”‚   โ””โ”€โ”€ collect-searches/
โ”œโ”€โ”€ agents/             (planned) Custom Claude Code subagents
โ”œโ”€โ”€ mcp-servers/        (planned) Model Context Protocol servers
โ”œโ”€โ”€ playbooks/          (planned) Reusable, AI-consumable implementation guides
โ””โ”€โ”€ README.md

Installing

The install instructions below use project-scaffolder as the running example. Substitute <name> with the directory name of any other utility from the index above (e.g. codebase-planner).

Claude Code (native)

Run from the repo root:

# Global โ€” available in every Claude Code session
mkdir -p ~/.claude/skills
ln -s "$(pwd)/skills/project-scaffolder" ~/.claude/skills/project-scaffolder

# Or project-local โ€” only in one project
mkdir -p /path/to/your-project/.claude/skills
ln -s "$(pwd)/skills/project-scaffolder" /path/to/your-project/.claude/skills/project-scaffolder

Windows note: ln -s requires Developer Mode or admin. Use mklink /J (cmd) or New-Item -ItemType SymbolicLink (PowerShell) instead, or use WSL.

Invoke with /project-scaffolder (or /<name> for any other utility). Skills that ship with disable-model-invocation: true only fire on explicit invocation.

Using with other AI coding tools

The SKILL.md body is plain Markdown describing a workflow โ€” any AI tool that can accept custom instructions can use it. What differs per tool is where the file goes and how the tool loads it. Bundled scripts under skills/<name>/scripts/ are portable and work unchanged.

When porting, two Claude-specific bits to adapt:

  • Frontmatter: name, description, disable-model-invocation are Claude Code fields. Other tools either ignore them or use a different schema (see per-tool notes below).
  • ${CLAUDE_SKILL_DIR}: Claude resolves this at load time. For other tools, replace with the actual absolute path to the skill directory.

Codex CLI

Codex CLI has a near-identical skill convention. Run from the repo root:

mkdir -p ~/.codex/skills
ln -s "$(pwd)/skills/project-scaffolder" ~/.codex/skills/project-scaffolder

Then invoke /project-scaffolder from inside Codex. The frontmatter is broadly compatible; if Codex rejects an unknown field, remove disable-model-invocation and tell the agent the workflow is manual-only in the body.

Gemini CLI

Gemini CLI doesn't have a skill system, but it loads GEMINI.md for context. Two adoption patterns:

# Option A โ€” wire as a custom command (recommended for repeat use)
mkdir -p ~/.gemini/commands
cat > ~/.gemini/commands/project-scaffolder.toml <<'EOF'
description = "Bootstrap a new project's common, non-domain baseline inside an isolated git worktree."
prompt = """
Follow the workflow in: /absolute/path/to/skills/project-scaffolder/SKILL.md
References live next to it under references/.
"""
EOF

# Option B โ€” drop the SKILL.md body into the project's GEMINI.md
# (strips the YAML frontmatter automatically, preserves body --- separators)
awk 'fm < 2 { if (/^---$/) fm++; next } { print }' \
  skills/project-scaffolder/SKILL.md > ./GEMINI.md

Invoke option A with /project-scaffolder inside Gemini; option B is automatic context once GEMINI.md is present.

GitHub Copilot (Copilot Chat in IDE, or gh copilot)

Copilot has no skill system; the closest equivalent is the project-level instructions file.

# Project-scoped: tell Copilot Chat to follow the workflow
mkdir -p .github
cat > .github/copilot-instructions.md <<'EOF'
When the user asks to scaffold a project, follow the workflow in
/absolute/path/to/skills/project-scaffolder/SKILL.md. Honor every phase
gate (no mutations before stack confirmation; no merge without user
typing `confirm merge`). References live under references/ next to it.
EOF

Note about the gh copilot CLI: it's scoped to single-command suggestions (gh copilot suggest) and command-explanation (gh copilot explain), not multi-step interactive workflows. Piping a procedural workflow into gh copilot suggest returns one shell-command suggestion, not the documented Phase-gated execution. For workflow-style use, stay with the .github/copilot-instructions.md route above and drive the workflow via Copilot Chat in your IDE.

Cursor AI

Cursor uses .cursor/rules/*.mdc with its own frontmatter format.

# Project-scoped: convert SKILL.md frontmatter to MDC frontmatter
mkdir -p .cursor/rules
cat > .cursor/rules/project-scaffolder.mdc <<'EOF'
---
description: Bootstrap a new project's common, non-domain baseline inside an isolated git worktree.
globs: []
alwaysApply: false
---
EOF
# Append the SKILL.md body (everything after the YAML frontmatter).
# Uses awk, not sed: SKILL.md uses --- horizontal-rule separators in the
# body too, and a naive sed range would silently drop most Phase sections.
awk 'fm < 2 { if (/^---$/) fm++; next } { print }' \
  skills/project-scaffolder/SKILL.md >> .cursor/rules/project-scaffolder.mdc

In Cursor, attach the rule explicitly when starting a task (or set alwaysApply: true if you want it on every chat).

Validating a skill

Each Claude Code skill is expected to pass the official validators:

python3 ~/.claude/skills/skill-creator/scripts/quick_validate.py skills/<name>
python3 ~/.claude/skills/skill-creator/scripts/package_skill.py skills/<name> /tmp/out

These check the YAML frontmatter, the 500-line SKILL.md soft cap, the directory layout, and ${CLAUDE_SKILL_DIR}/... reference resolution.

Contributing

  1. Each utility lives in its own subdirectory under the appropriate top-level category (skills/, agents/, โ€ฆ).
  2. Run the validator for the category before opening a PR.
  3. Keep machine-local state out of git โ€” .claude/settings.local.json is already gitignored; add new patterns to .gitignore if you find leakage.
  4. If the utility is portable to non-Claude AI tools, add a note to the per-tool table in this README.
  5. Add a row for the new utility in the Item index above so it's discoverable.

AI-tool instruction files (CLAUDE.md, AGENTS.md, GEMINI.md, .github/copilot-instructions.md) are intentionally gitignored. This is a deliberate convention break from the typical "commit CLAUDE.md so the whole team shares context" pattern. Each contributor authors their own version locally based on this README, because tool stacks and instruction styles differ per maintainer. If your AI tool runs claude /init (or equivalent) and writes a CLAUDE.md, you'll see it silently ignored โ€” that's expected. This README is the canonical contributor doc; the rest is yours to tailor.

License

Released into the public domain via CC0 1.0 Universal. To the extent possible under law, the author(s) have waived all copyright and related or neighboring rights to this work. You may copy, modify, distribute, and use the work, even for commercial purposes, all without asking permission. See LICENSE for the full text.


ํ•œ๊ตญ์–ด

Claude Code ์ƒํƒœ๊ณ„์šฉ AI ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ์Œ โ€” ์Šคํ‚ฌ, ์—์ด์ „ํŠธ, MCP ์„œ๋ฒ„, ํ”Œ๋ ˆ์ด๋ถ ๋“ฑ ๋นŒ๋”ฉ ๋ธ”๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋…๋ฆฝ์ ์ด๊ณ , ๊ณต์‹ Claude Skills ํ‘œ์ค€์„ ํ†ต๊ณผํ•˜๋ฉฐ, ์•ฝ๊ฐ„์˜ ์ˆ˜์ •๋งŒ์œผ๋กœ ๋‹ค๋ฅธ AI ์ฝ”๋”ฉ ๋„๊ตฌ(Codex CLI, Gemini CLI, GitHub Copilot, Cursor)์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด README๋Š” ์ €์žฅ์†Œ์˜ ์•„์ดํ…œ ์ธ๋ฑ์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์•„์ดํ…œ์€ ์•„๋ž˜์— ์œ ํ˜•๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋„๊ตฌ๋ณ„ ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ๊ทธ ๋’ค์— ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์•„์ดํ…œ ์ธ๋ฑ์Šค

์Šคํ‚ฌ

์Šคํ‚ฌ ์„ค๋ช…
project-scaffolder ์–ธ์–ด ๋ฌด๊ด€ ํ”„๋กœ์ ํŠธ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํผ. ์˜๋„ ํŒŒ์•… โ†’ 2-4๊ฐœ ์Šคํƒ ์˜ต์…˜ ์ถ”์ฒœ โ†’ ๋ฒ ์ด์Šค๋ผ์ธ ์Šค์บํด๋”ฉ (๋ฆฐํŠธ, ํ…Œ์ŠคํŠธ, ๋กœ๊น…, ์„ค์ •, CI ์Šคํ…, ํ—ฌ์Šค ์—”๋“œํฌ์ธํŠธ) ํ๋ฆ„์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์€ ๊ฒฉ๋ฆฌ๋œ git worktree ์•ˆ์—์„œ๋งŒ ์ผ์–ด๋‚˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ๋งŒ dev ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€๋ฉ๋‹ˆ๋‹ค. Tier-1 ์Šคํƒ: Next.js, Spring Boot, FastAPI, Go, Node/Express.
intent-aligner ๊ณ„ํš ์ฒด์ธ์˜ ์ƒ๋ฅ˜ ๋‹จ๊ณ„ โ€” ์ด์ œ seed-gatherer์™€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ณ„ํš์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์‚ฌ์šฉ์ž์˜ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์˜๋„๋ฅผ ๋„์ง‘์–ด๋‚ด ๋ช…ํ™•ํžˆ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• elicitation(์†Œํฌ๋ผํ…Œ์Šค์‹ ์งˆ๋ฌธ ๋ฃจํ”„ + 5 Whys + ์˜ˆ์‹œ/๋ฐ˜๋ก€ ๋ถ„๋ณ„)์„ ํ†ตํ•ด ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ/์ œํ’ˆ์ธ์ง€ ๊ฒช๊ณ  ์žˆ๋Š” ๋ฌธ์ œ/๋ถˆํŽธํ•จ์ธ์ง€ ์ž๋™ ํŒ๋ณ„ํ•˜๊ณ , ์˜๋„๊ฐ€ ์ˆ˜๋ ดํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฌผ์€ ๋‘ ํ˜•์‹ โ€” intent.<slug>.md(๊ตฌ์กฐํ™”๋œ AI ํŒŒ์‹ฑ์šฉ ์‹œ๋“œ) ๋ฐ intent.<slug>.html(์™ธ๋ถ€ ์˜์กด์„ฑ ์—†๋Š” ์‚ฌ๋žŒ ๊ฒ€์ฆ์šฉ ๋ฌธ์„œ). ์Šคํƒยทํ”Œ๋ž˜๋„ˆยท๋ ˆ์ธ ๋ฌด๊ด€: 6๊ฐœ ๋ฃจ๋ธŒ๋ฆญ ํ•„๋“œ(Goal, In-scope features, Out-of-scope, Constraints, Success criteria, Open questions)๋Š” codebase-planner๊ฐ€ ๊ทธ๋Œ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ํ˜ธ์ถœ: /intent-aligner๋กœ ์ตœ์ดˆ ์บก์ฒ˜(create mode, revision 1) ๋˜๋Š” /intent-aligner update <slug>๋กœ ๋ˆ„์ ๋œ ์‹œ๋“œ๋กœ๋ถ€ํ„ฐ ์˜๋„๋ฅผ ์ •์ œ(update mode). update mode๋Š” ๊ธฐ์กด intent + seeds/seed.<slug>.*.md ๊ธ€๋กญ์„ ๋กœ๋“œํ•ด ์‹œ๋“œ ๊ทผ๊ฑฐ๊ฐ€ ๋ถ™์€ ํ•„๋“œ๋ณ„ ์ •์ œ์•ˆ์„ ์ œ์•ˆํ•˜๊ณ , revision์„ 1์”ฉ ์ฆ๊ฐ€(Revision: N)์‹œํ‚ค๋ฉฐ (intent, updated-from-seeds, human-confirmed) ๋งˆ์ปค๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค โ€” ์‹œ๋“œโ†’์˜๋„ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ๊ณ„ํš์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์˜๋„๋ฅผ ๋”์šฑ ๋‹จ๋‹จํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹ค์šด์ŠคํŠธ๋ฆผ seed-gatherer๊ฐ€ evidence๋ฅผ ๋ชจ์œผ๊ณ , plan-establisher๊ฐ€ intent + ์‹œ๋“œ๋ฅผ plan.<intent-slug>.v<N>.md๋กœ foldingํ•ฉ๋‹ˆ๋‹ค. Create-mode ๋งˆ์ปค: (intent, human-confirmed). ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /intent-aligner ๋˜๋Š” /intent-aligner update <slug>.
seed-gatherer ๊ณ„ํš ์ฒด์ธ์—์„œ intent-aligner์™€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ. Standard path: ๊ธฐ์กด intent.<slug>.md๋ฅผ ์ฝ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์™ธ๋ถ€ ์ž๋ฃŒ(์›น URL, YouTube, PDF, ์ด๋ฏธ์ง€, ๋กœ์ปฌ ๋ฌธ์„œ/์ฝ”๋“œ)์—์„œ evidence corpus๋ฅผ ํ‚ค์›Œ, ์ถœ์ฒ˜ provenanceยท์˜๋„-ํ•„ํ„ฐ๋ง๋œ ์ถ”์ถœยทintent ํ•„๋“œ๋ณ„ ๊ด€๋ จ์„ฑ ์„ค๋ช…์„ ๋‹ด์€ md+html ์‹œ๋“œ ์Œ(seeds/seed.<intent-slug>.<resource-slug>.{md,html})์„ ๋ฆฌ์†Œ์Šค๋‹น ํ•˜๋‚˜์”ฉ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. Bootstrap path: intent.md๊ฐ€ ์—†์„ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ prompt/URL/ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋ฉด ์Šคํ‚ฌ์ด ์ฆ‰์„์—์„œ intent๋ฅผ ์บก์ฒ˜(revision 1, Bootstrapped by: seed-gatherer ํ‘œ์‹)ํ•ด intent.md + intent.html์„ ์‹œ๋“œ์™€ ํ•จ๊ป˜ ํ•œ ๋ฒˆ์˜ ๋จธ์ง€์— ์‚ฐ์ถœ โ€” ๋งˆ์ปค (intent+seeds, bootstrap, human-confirmed). Ideation path: ์™ธ๋ถ€ ์ž๋ฃŒ๊ฐ€ ์ „ํ˜€ ์—†์„ ๋•Œ AI/์‚ฌ์šฉ์ž ๊ฐ„ tiki-taka ๋Œ€ํ™” + feasibility ๊ฒ€์ฆ(WebSearch, ๋กœ์ปฌ ์ฝ”๋“œ grep, ๋ ˆํผ๋Ÿฐ์Šค ๋ฌธ์„œ ์กฐํšŒ)์„ ํ†ตํ•ด ์ฑ„ํƒ๋œ ์•„์ด๋””์–ด ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ ์‹œ๋“œ๋กœ ๊ฒฐ์ •ํ™” โ€” ๋งˆ์ปค (seeds, ideation, human-confirmed). Bootstrap๊ณผ ideation์€ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ fetch ์ง์ „์˜ proceed ๊ฒŒ์ดํŠธ๋กœ ์ž˜๋ชป ๋ถ™์—ฌ๋„ฃ์€ URL์„ ์ฐจ๋‹จ(bootstrap๊ณผ standard ์ธํ…Œ์ดํฌ ์–‘์ชฝ ์ ์šฉ). ๋ฐ˜๋ณต ์‹คํ–‰ ๊ฐ€๋Šฅ, 3-case ์ถฉ๋Œ ํ•ด์†Œ ๋ณด์กด. plan-establisher์— ์ž…๋ ฅ๋˜๊ณ , ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๋œ intent์˜ ์ •์ œ๋Š” /intent-aligner update <slug>๋กœ ํ˜๋Ÿฌ๊ฐ‘๋‹ˆ๋‹ค. ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /seed-gatherer.
plan-establisher seed-gatherer์™€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํ”Œ๋ž˜๋„ˆ๋“ค โ€” codebase-planner(์ฝ”๋“œ์šฉ)์™€ document-planner(๋ฌธ์„œ์šฉ) โ€” ์‚ฌ์ด์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. intent.<slug>.md(ํ•„์ˆ˜)์™€ seeds/seed.<intent-slug>.*.md(์„ ํƒ) ๋ฅผ ์ฝ์–ด 4๊ฐ€์ง€ ๊ฒ€์ฆ ์ฐจ์›(intent ์ž์ฒด ์ผ๊ด€์„ฑ, seeds-vs-intent, seeds-vs-seeds, planner-๋ฃจ๋ธŒ๋ฆญ ์™„์ „์„ฑ)์„ ์‹คํ–‰ํ•˜๊ณ , ๋Œ€ํ™”ํ˜• ์†Œํฌ๋ผํ…Œ์Šค ๋‹ค์ด์–ผ๋กœ๊ทธ(๊ฐœ๋ณ„ (d) Defer ๋˜๋Š” ์ผ๊ด„ accept remaining)๋กœ ๋ชจํ˜ธ์„ฑ์„ ํ•ด๊ฒฐํ•œ ๋’ค, ํ”Œ๋ž˜๋„ˆ ์นœํ™”์ ์œผ๋กœ folding๋œ plan.<intent-slug>.v<N>.md + .html์„ ์ €์žฅ์†Œ ๋ฃจํŠธ์— ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด์ŠคํŠธ๋ฆผ ํ”Œ๋ž˜๋„ˆ๋Š” ์ด plan ๋งŒ ํ™œ์„ฑ ์ž…๋ ฅ์œผ๋กœ ์ฝ๊ณ , intent.md์™€ seeds/๋Š” ์›๋ณธ ์†Œ์Šค ์ž๋ฃŒ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ scale lane(micro/local/feature/system) + ๊ทผ๊ฑฐ์™€, ๋ฃจ๋ธŒ๋ฆญ ํ•„๋“œ โ†’ ๊ธฐ์—ฌ ์‹œ๋“œ ๋งคํ•‘์ธ Evidence inventory๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต ์‹คํ–‰ ๊ฐ€๋Šฅ โ€” ๊ฐ ํ˜ธ์ถœ์€ ๋‹ค์Œ ๋‹จ์กฐ ์ฆ๊ฐ€ ๋ฒ„์ „(v1, v2, ...)์„ ์‚ฐ์ถœํ•˜๋ฉฐ ์ด์ „ ๋ฒ„์ „์„ audit trail๋กœ ๋ณด์กดํ•˜๊ณ , Phase 5์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰์„ ์œ„ํ•œ race-guard ์žฌ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  mutation์€ git worktree ์•ˆ์—์„œ๋งŒ ์ผ์–ด๋‚˜๋ฉฐ confirm merge ํ›„์—๋งŒ dev๋กœ ๋จธ์ง€๋ฉ๋‹ˆ๋‹ค. ๋จธ์ง€ ๋งˆ์ปค (plan, human-confirmed)๋กœ git log์—์„œ ์ฒด์ธ์ด ๊ฐ€์‹œํ™”๋ฉ๋‹ˆ๋‹ค. ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /plan-establisher.
codebase-planner ์ฝ”๋“œ ๋ณ€๊ฒฝ์— ํ•„์š”ํ•œ ๊ณ„ํš ๊ทœ๋ชจ๋ฅผ ๋จผ์ € ํŒ์ •ํ•œ ๋’ค, ํ•ด๋‹น ๋ ˆ์ธ์— ํ•„์š”ํ•œ ๋‹จ๊ณ„๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๋‹จ๊ณ„ ์Šค์ผ€์ผ: micro(๋‹จ์ผ ํ•จ์ˆ˜ ์ˆ˜์ค€, 3โ€“7 ํ•ญ๋ชฉ ์ฑ„ํŒ… ํ”Œ๋žœ, worktree ์—†์Œ), local(โ‰ค3 ํŒŒ์ผยท๋‹จ์ผ ๋ชจ๋“ˆ, ์ฑ„ํŒ… ํ”Œ๋žœ), feature(worktree + plan.md + Mermaid DAG, ์Šค์ผˆ๋ ˆํ†ค ์„ ํƒ์ ), system(์ด์ „ codebase-architect ์Šคํ‚ฌ์˜ ์ „์ฒด ์ธํ„ฐํŽ˜์ด์Šค-์Šค์ผˆ๋ ˆํ†ค ์›Œํฌํ”Œ๋กœ โ€” worktree + 9-ํ•„๋“œ docstring + Mermaid DAG + HTML ๋ฆฌํฌํŠธ + ์‚ฌ๋žŒ ํ™•์ธ ๋จธ์ง€ ๊ฒŒ์ดํŠธ). ๋ ˆ์ธ์€ mutation ์ง์ „์— (scope, risk, ambiguity) ์ ์ˆ˜ ํŠœํ”Œ๋กœ ๊ฒฐ์ •๋˜๋ฉฐ, ์š”์ฒญ์ด ๋ชจํ˜ธํ•˜๋ฉด silently ๊ณผ์„ค๊ณ„ํ•˜์ง€ ์•Š๊ณ  ๋ช…ํ™•ํ™” ์งˆ๋ฌธ์œผ๋กœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด์ŠคํŠธ๋ฆผ ๊ตฌํ˜„ ์—์ด์ „ํŠธ๋Š” scale-tagged marker family๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค(์•„๋ž˜ codebase-implementer ์ฐธ์กฐ). ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /codebase-planner.
codebase-implementer plannerโ†’implementer ์ฒด์ธ์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ ˆ๋ฐ˜. ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธํ•œ planner์˜ scale-tagged marker๋ฅผ chat(micro/local) ๋˜๋Š” ๋จธ์ง€ ์ปค๋ฐ‹(feature/system)์—์„œ ์ฝ์–ด, ์ž์ฒด git worktree๋ฅผ ๋งŒ๋“  ๋’ค ๋ชจ๋“  phase๋ฅผ ์ž์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(per-step ํ™•์ธ ์—†์Œ, ์ง„์งœ blocker(์˜ˆ: ๋ฏธ์ •์˜ collaborator)๋งŒ ์ •์ง€ ์‹ ํ˜ธ). ๊ตฌํ˜„ ๋ณธ๋ฌธ์„ 9-ํ•„๋“œ docstring(system) ๋˜๋Š” plan ๋‹จ๊ณ„(feature) ๋˜๋Š” bullet(micro/local)์—์„œ ์ƒ์„ฑํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์˜ compile+test ๋ช…๋ น์„ bounded auto-fix(๊ธฐ๋ณธ 3ํšŒ, oscillation ๊ฐ์ง€)๋กœ ๋Œ๋ฆฐ ๋’ค, ๋ฆฌ๋ทฐ์šฉ implementation-report.md๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ confirm merge๋ผ๊ณ  ์ž…๋ ฅํ•ด์•ผ๋งŒ base branch(๊ธฐ๋ณธ dev)๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์–ด ๋ฌด๊ด€. ๋ณธ๋ฌธ ์ƒ์„ฑ ์ „์šฉ โ€” re-architecting, refactoring, ์ปค๋ฐ‹๋œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ์€ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /codebase-implementer.
document-planner codebase-planner์˜ ๋ฌธ์„œ ๋ฒ„์ „ ์ž๋งค ์Šคํ‚ฌ. ๋ฌธ์„œ์— ํ•„์š”ํ•œ ๊ณ„ํš ๊ทœ๋ชจ๋ฅผ ๋จผ์ € ํŒ์ •ํ•œ ๋’ค, ํ•ด๋‹น ๋ ˆ์ธ์— ํ•„์š”ํ•œ ๋‹จ๊ณ„๋งŒ ์‹คํ–‰ โ€” ๋„ค ๋‹จ๊ณ„ ์Šค์ผ€์ผ(micro / local / feature / system)๊ณผ (scope, risk, ambiguity) triage๋Š” ๋™์ผํ•˜๋‚˜, ์ถ•์€ ๋ฌธ์„œ ์˜๋ฏธ๋กœ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค(scope = ์ฝ˜ํ…์ธ  ๋ถ„๋Ÿ‰, risk = ์ •ํ™•์„ฑ/์ปดํ”Œ๋ผ์ด์–ธ์Šค, ambiguity = ๋ฏธํ•ด๊ฒฐ ์ฃผ์žฅ/๊ทผ๊ฑฐ/๋Œ€์ƒ). 1๊ธ‰ ์‹œ๋ฏผ์ธ DOCTYPE ๋ถ„๋ฅ˜๊ฐ€ api-spec / tech-spec / runbook / ppt ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด stub primitive(์—”๋“œํฌ์ธํŠธ๋ณ„ / ์„น์…˜๋ณ„ / ๋‹จ๊ณ„๋ณ„ / ์Šฌ๋ผ์ด๋“œ๋ณ„)์™€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ์Šคํƒ(text๋Š” markdown ๊ณ„์—ด, structured๋Š” pptx)์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด ๋ ˆ์ธ์€ 9-ํ•„๋“œ stub ์Šคํ‚ค๋งˆ(## stub: <id> + YAML ๋ณธ๋ฌธ โ€” id, purpose, audience, key claims, evidence sources, dependencies, acceptance criteria, length budget, open questions) + Mermaid ์˜์กด์„ฑ DAG + ์ž์ฒด ์™„๊ฒฐํ˜• HTML ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ๊ฒ€์ฆ๊ธฐ๋Š” ๊ตฌ์กฐ(DFS ์‚ฌ์ดํด ๊ฐ์ง€), ๋‚ด๋ถ€ ์ฐธ์กฐ ํ•ด๊ฒฐ([[stub-id]]), ๊ทธ๋ฆฌ๊ณ  ๋ Œ๋” ๋‹จ๊ณ„์—์„œ์˜ ๋ฏธ์„ ์–ธ ์˜์กด์„ฑ์„ ๋ชจ๋‘ ์žก์Šต๋‹ˆ๋‹ค. ๋งˆ์ปค ํŒจ๋ฐ€๋ฆฌ (document-plan-<scale>, human-confirmed)๋Š” ์ƒˆ๋กœ ์ •์˜๋œ ๊ฒƒ์œผ๋กœ, codebase-planner์˜ ๋ ˆ๊ฑฐ์‹œ (interfaces only, โ€ฆ) system ๋งˆ์ปค๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /document-planner.
document-implementer document-planner โ†’ document-implementer ์Œ์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ ˆ๋ฐ˜. planner์˜ (document-plan-<scale>, human-confirmed) ํ•ธ๋“œ์˜คํ”„๋ฅผ ์ฝ๊ณ (feature/system์€ document-plan.md ์ตœ์ƒ๋‹จ frontmatter, micro/local์€ ์ฑ„ํŒ… ํ•ธ๋“œ์˜คํ”„ ๋ธ”๋ก + revise ์‚ฌ์ดํด์— ๋Œ€ํ•œ ๋ช…์‹œ์  ์‹œ๊ฐ„์ˆœ ํŽ˜์–ด๋ง ๊ทœ์น™), ์ž์ฒด git worktree๋ฅผ ๋งŒ๋“  ๋’ค ์ž์œจ์ ์œผ๋กœ ์†Œ์Šค ์ˆœ์„œ๋Œ€๋กœ ์ƒ์„ฑ ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค โ€” text ๋„ํํƒ€์ž…(api-spec / tech-spec / runbook)์€ TARGET_PATH์— markdown์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉฐ ๊ฐ ์„น์…˜ ํ—ค๋”ฉ ์•ž์— ๋ช…์‹œ์  <a id="<stub-id>"></a> ์•ต์ปค๋ฅผ emitํ•˜๊ณ , structured(ppt)๋Š” ์Šฌ๋ผ์ด๋“œ๋ณ„ ์ฝ˜ํ…์ธ ๋ฅผ state์— ๋ˆ„์ ํ•œ ๋’ค ๋ฒˆ๋“ค render_pptx.py๋กœ ๋ Œ๋”(๊ฐ ์Šฌ๋ผ์ด๋“œ speaker notes ์ฒซ ์ค„์— stub-id provenance ์ฃผ์ž…)ํ•ฉ๋‹ˆ๋‹ค. Phase 4 bounded auto-fix(text=3ํšŒ, structured=0ํšŒ โ€” pptx ์‹คํŒจ๋Š” LLM์œผ๋กœ ์ž˜ ์•ˆ ๊ณ ์ณ์ง). Phase 5 self-verification ๋ฆฌํฌํŠธ๋Š” stub๋ณ„ ๋ช…์‹œ์  acceptance-criteria ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ์‚ฌ๋žŒ ๋ฆฌ๋ทฐ์–ด๊ฐ€ confirm merge ์ „์— ํ•ญ๋ชฉ๋ณ„๋กœ ํ™•์ธํ•œ ๋’ค (document-impl-<scale>, human-confirmed) ๋งˆ์ปค๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค. planner ์ธก parse_frontmatter.py์™€์˜ mirror discipline(planner๊ฐ€ canonical). ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /document-implementer.
collect-searches ๋‘ ๋‹จ๊ณ„๋กœ ๋™์ž‘ํ•˜๋Š” Chrome ๊ฒ€์ƒ‰ ๊ธฐ๋ก โ†’ Obsidian ํŒŒ์ดํ”„๋ผ์ธ. 1๋‹จ๊ณ„๋Š” ๊ฒฐ์ •๋ก ์  Python ์ปฌ๋ ‰ํ„ฐ(scripts/collect.py)๋กœ Chrome ๋กœ์ปฌ SQLite ๊ธฐ๋ก์„ ์ฝ๊ณ , cursor์™€ lock์„ ์†Œ์œ ํ•˜๋ฉฐ, ์ƒˆ Google ๊ฒ€์ƒ‰์„ JSON ํŒŒ์ผ๋กœ vault ์ธ๋ฐ•์Šค์— ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. 2๋‹จ๊ณ„๋Š” ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ๋กœ ๊ฐ ๊ฒ€์ƒ‰์„ Obsidian ์นดํ…Œ๊ณ ๋ฆฌ ํด๋”๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ , WebSearch๋กœ 1โ€“3๊ฐœ ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์ถœ์ฒ˜๋ฅผ ๋ณด๊ฐ•ํ•ด ๊ฒ€์ƒ‰๋ณ„ Markdown ๋…ธํŠธ๋ฅผ ํ•œ ๊ฐœ์”ฉ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๊ธฐ ์‹คํ–‰์šฉ์œผ๋กœ ์„ค๊ณ„๋จ(์˜ˆ: /loop 6h /collect-searches). ๋ถ€์ˆ˜ํšจ๊ณผ ์žˆ์Œ(๋…ธํŠธ ์ž‘์„ฑ, ์„ฑ๊ณต ์‹œ ์ธ๋ฐ•์Šค ํŒŒ์ผ ์‚ญ์ œ). ์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ โ€” /collect-searches.

์—์ด์ „ํŠธ

(์˜ˆ์ • โ€” ์•„์ง ์ œ๊ณต๋˜๋Š” ํ•ญ๋ชฉ ์—†์Œ)

MCP ์„œ๋ฒ„

(์˜ˆ์ • โ€” ์•„์ง ์ œ๊ณต๋˜๋Š” ํ•ญ๋ชฉ ์—†์Œ)

ํ”Œ๋ ˆ์ด๋ถ

(์˜ˆ์ • โ€” ์•„์ง ์ œ๊ณต๋˜๋Š” ํ•ญ๋ชฉ ์—†์Œ)

์ €์žฅ์†Œ ๊ตฌ์กฐ

ai-driven-items/
โ”œโ”€โ”€ skills/             Claude Code ์Šคํ‚ฌ (์ ˆ์ฐจ์  ์›Œํฌํ”Œ๋กœ + ๋ฒˆ๋“ค ๋ฆฌ์†Œ์Šค)
โ”‚   โ”œโ”€โ”€ project-scaffolder/
โ”‚   โ”œโ”€โ”€ intent-aligner/
โ”‚   โ”œโ”€โ”€ seed-gatherer/
โ”‚   โ”œโ”€โ”€ plan-establisher/
โ”‚   โ”œโ”€โ”€ codebase-planner/
โ”‚   โ”œโ”€โ”€ codebase-implementer/
โ”‚   โ”œโ”€โ”€ document-planner/
โ”‚   โ”œโ”€โ”€ document-implementer/
โ”‚   โ””โ”€โ”€ collect-searches/
โ”œโ”€โ”€ agents/             (์˜ˆ์ •) Claude Code ์ปค์Šคํ…€ ์„œ๋ธŒ์—์ด์ „ํŠธ
โ”œโ”€โ”€ mcp-servers/        (์˜ˆ์ •) Model Context Protocol ์„œ๋ฒ„
โ”œโ”€โ”€ playbooks/          (์˜ˆ์ •) ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ AI ์นœํ™”์  ๊ตฌํ˜„ ๊ฐ€์ด๋“œ
โ””โ”€โ”€ README.md

์„ค์น˜

์•„๋ž˜ ์„ค์น˜ ๋ฐฉ๋ฒ•์€ project-scaffolder ๋ฅผ ์˜ˆ์‹œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ธ๋ฑ์Šค์˜ ๋‹ค๋ฅธ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด <name> ๋ถ€๋ถ„์„ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ์น˜ํ™˜ํ•˜์„ธ์š”(์˜ˆ: codebase-planner).

Claude Code (๋„ค์ดํ‹ฐ๋ธŒ)

์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”:

# ์ „์—ญ ์„ค์น˜ โ€” ๋ชจ๋“  Claude Code ์„ธ์…˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
mkdir -p ~/.claude/skills
ln -s "$(pwd)/skills/project-scaffolder" ~/.claude/skills/project-scaffolder

# ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ณ„ ์„ค์น˜ โ€” ํŠน์ • ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ
mkdir -p /path/to/your-project/.claude/skills
ln -s "$(pwd)/skills/project-scaffolder" /path/to/your-project/.claude/skills/project-scaffolder

Windows ์ฐธ๊ณ : ln -s ๋Š” Developer Mode ๋˜๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  mklink /J (cmd) ๋˜๋Š” New-Item -ItemType SymbolicLink (PowerShell) ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ WSL์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

/project-scaffolder ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” /<name>). disable-model-invocation: true ๊ฐ€ ์„ค์ •๋œ ์Šคํ‚ฌ์€ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ๋•Œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ AI ์ฝ”๋”ฉ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ

SKILL.md ๋ณธ๋ฌธ์€ ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ธฐ์ˆ ํ•œ ์ผ๋ฐ˜ Markdown ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ง€์นจ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” AI ๋„๊ตฌ๋ผ๋ฉด ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒƒ์€ ํŒŒ์ผ์„ ์–ด๋””์— ๋‘๋А๋ƒ์™€ ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋กœ๋“œํ•˜๋А๋ƒ ๋ฟ์ž…๋‹ˆ๋‹ค. skills/<name>/scripts/ ์˜ ๋ฒˆ๋“ค ์Šคํฌ๋ฆฝํŠธ๋Š” ํœด๋Œ€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ผ ๊ทธ๋Œ€๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด์‹ ์‹œ ๋‘ ๊ฐ€์ง€ Claude ์ „์šฉ ์š”์†Œ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • Frontmatter: name, description, disable-model-invocation ์€ Claude Code ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋„๊ตฌ๋Š” ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (๊ฐ ๋„๊ตฌ๋ณ„ ๋…ธํŠธ ์ฐธ์กฐ).
  • ${CLAUDE_SKILL_DIR}: Claude๊ฐ€ ๋กœ๋“œ ์‹œ์ ์— ํ•ด์„ํ•˜๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋„๊ตฌ์—์„œ๋Š” ์‹ค์ œ ์Šคํ‚ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์น˜ํ™˜ํ•˜์„ธ์š”.

Codex CLI

Codex CLI๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ์Šคํ‚ฌ ๊ทœ์•ฝ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”:

mkdir -p ~/.codex/skills
ln -s "$(pwd)/skills/project-scaffolder" ~/.codex/skills/project-scaffolder

Codex ์•ˆ์—์„œ /project-scaffolder ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Frontmatter๋Š” ๋Œ€์ฒด๋กœ ํ˜ธํ™˜๋˜๋ฉฐ, Codex๊ฐ€ ์•Œ ์ˆ˜ ์—†๋Š” ํ•„๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค๋ฉด disable-model-invocation ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ณธ๋ฌธ์— "์ˆ˜๋™ ํ˜ธ์ถœ ์ „์šฉ" ์ž„์„ ๋ช…์‹œํ•˜์„ธ์š”.

Gemini CLI

Gemini CLI์—๋Š” ์Šคํ‚ฌ ์‹œ์Šคํ…œ์ด ์—†์ง€๋งŒ GEMINI.md ๋ฅผ ์ปจํ…์ŠคํŠธ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋„์ž… ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค:

# ์˜ต์…˜ A โ€” ์ปค์Šคํ…€ ์ปค๋งจ๋“œ๋กœ ์—ฐ๊ฒฐ (๋ฐ˜๋ณต ์‚ฌ์šฉ์— ๊ถŒ์žฅ)
mkdir -p ~/.gemini/commands
cat > ~/.gemini/commands/project-scaffolder.toml <<'EOF'
description = "๊ฒฉ๋ฆฌ๋œ git worktree ์•ˆ์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ์˜ ๊ณตํ†ต(๋น„๋„๋ฉ”์ธ) ๋ฒ ์ด์Šค๋ผ์ธ์„ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•ฉ๋‹ˆ๋‹ค."
prompt = """
๋‹ค์Œ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”: /absolute/path/to/skills/project-scaffolder/SKILL.md
์ฐธ์กฐ ๋ฌธ์„œ๋Š” ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ references/ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
"""
EOF

# ์˜ต์…˜ B โ€” SKILL.md ๋ณธ๋ฌธ์„ ํ”„๋กœ์ ํŠธ์˜ GEMINI.md ์— ์ž๋™ ๋ณ€ํ™˜ํ•˜์—ฌ ์ž‘์„ฑ
# (YAML frontmatter๋ฅผ ์ž๋™ ์ œ๊ฑฐํ•˜๊ณ , ๋ณธ๋ฌธ์˜ --- ๊ตฌ๋ถ„์ž๋Š” ๊ทธ๋Œ€๋กœ ๋ณด์กด)
awk 'fm < 2 { if (/^---$/) fm++; next } { print }' \
  skills/project-scaffolder/SKILL.md > ./GEMINI.md

์˜ต์…˜ A๋Š” Gemini ๋‚ด๋ถ€์—์„œ /project-scaffolder ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ B๋Š” GEMINI.md ๊ฐ€ ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ์ปจํ…์ŠคํŠธ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

GitHub Copilot (IDE์˜ Copilot Chat ๋˜๋Š” gh copilot)

Copilot์—๋Š” ์Šคํ‚ฌ ์‹œ์Šคํ…œ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€์‘์€ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์ง€์นจ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

# ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„ โ€” Copilot Chat์— ์›Œํฌํ”Œ๋กœ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ์ง€์‹œ
mkdir -p .github
cat > .github/copilot-instructions.md <<'EOF'
์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ ์Šค์บํด๋”ฉ์„ ์š”์ฒญํ•˜๋ฉด ๋‹ค์Œ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:
/absolute/path/to/skills/project-scaffolder/SKILL.md
๋ชจ๋“  ๋‹จ๊ณ„ ๊ฒŒ์ดํŠธ๋ฅผ ์ค€์ˆ˜ํ•˜์„ธ์š”(์Šคํƒ ํ™•์ • ์ „ ํŒŒ์ผ ๋ณ€๊ฒฝ ๊ธˆ์ง€,
์‚ฌ์šฉ์ž๊ฐ€ `confirm merge` ๋ผ๊ณ  ์ž…๋ ฅํ•˜๊ธฐ ์ „์—” ๋จธ์ง€ ๊ธˆ์ง€). ์ฐธ์กฐ ๋ฌธ์„œ๋Š”
๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ references/ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
EOF

gh copilot CLI ๊ด€๋ จ ์ฐธ๊ณ : ์ด CLI๋Š” ๋‹จ์ผ ์…ธ ๋ช…๋ น ์ œ์•ˆ(gh copilot suggest)๊ณผ ๋ช…๋ น ์„ค๋ช…(gh copilot explain) ์šฉ๋„์ด์ง€, ๋‹ค๋‹จ๊ณ„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์›Œํฌํ”Œ๋กœ์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ์ฐจ์  ์›Œํฌํ”Œ๋กœ๋ฅผ gh copilot suggest ์— ํŒŒ์ดํ”„๋กœ ๋„˜๊ธฐ๋ฉด ํ•œ ์ค„์งœ๋ฆฌ ๋ช…๋ น ์ œ์•ˆ๋งŒ ๋Œ๋ ค์ฃผ๋ฉฐ, ๋ฌธ์„œํ™”๋œ Phase-๊ฒŒ์ดํŠธ ํ๋ฆ„์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ์Šคํƒ€์ผ๋กœ ์“ฐ๋ ค๋ฉด ์œ„์˜ .github/copilot-instructions.md ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์‹ค์ œ ์ž‘์—…์€ IDE ์•ˆ์˜ Copilot Chat์—์„œ ์ง„ํ–‰ํ•˜์„ธ์š”.

Cursor AI

Cursor๋Š” .cursor/rules/*.mdc ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ž์ฒด frontmatter ํฌ๋งท์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

# ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„ โ€” SKILL.md frontmatter๋ฅผ MDC frontmatter๋กœ ๋ณ€ํ™˜
mkdir -p .cursor/rules
cat > .cursor/rules/project-scaffolder.mdc <<'EOF'
---
description: ๊ฒฉ๋ฆฌ๋œ git worktree ์•ˆ์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ์˜ ๊ณตํ†ต(๋น„๋„๋ฉ”์ธ) ๋ฒ ์ด์Šค๋ผ์ธ์„ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•ฉ๋‹ˆ๋‹ค.
globs: []
alwaysApply: false
---
EOF
# SKILL.md ๋ณธ๋ฌธ(YAML frontmatter ์ดํ›„) ์„ ๋ฃฐ ํŒŒ์ผ์— ์ด์–ด๋ถ™์ž…๋‹ˆ๋‹ค.
# sed๊ฐ€ ์•„๋‹Œ awk๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: SKILL.md ๋ณธ๋ฌธ์—๋„ --- ์ˆ˜ํ‰์„  ๊ตฌ๋ถ„์ž๊ฐ€
# ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ฑ์žฅํ•˜๋ฏ€๋กœ, ๋‹จ์ˆœํ•œ sed ๋ฒ”์œ„ ํŒจํ„ด์€ Phase ์„น์…˜์„ ๋ˆ„๋ฝ์‹œํ‚ต๋‹ˆ๋‹ค.
awk 'fm < 2 { if (/^---$/) fm++; next } { print }' \
  skills/project-scaffolder/SKILL.md >> .cursor/rules/project-scaffolder.mdc

Cursor ์•ˆ์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ช…์‹œ์ ์œผ๋กœ ๋ฃฐ์„ ์ฒจ๋ถ€ํ•˜์„ธ์š”(๋ชจ๋“  ๋Œ€ํ™”์—์„œ ์ž๋™ ์ ์šฉ์„ ์›ํ•˜๋ฉด alwaysApply: true ๋กœ ์„ค์ •).

์Šคํ‚ฌ ๊ฒ€์ฆ

๊ฐ Claude Code ์Šคํ‚ฌ์€ ๊ณต์‹ ๊ฒ€์ฆ ๋„๊ตฌ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

python3 ~/.claude/skills/skill-creator/scripts/quick_validate.py skills/<name>
python3 ~/.claude/skills/skill-creator/scripts/package_skill.py skills/<name> /tmp/out

๊ฒ€์ฆ ๋„๊ตฌ๋Š” YAML frontmatter, SKILL.md 500์ค„ ๊ถŒ์žฅ ํ•œ๋„, ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ ˆ์ด์•„์›ƒ, ${CLAUDE_SKILL_DIR}/... ์ฐธ์กฐ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌ ๊ฐ€์ด๋“œ

  1. ๊ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์•Œ๋งž์€ ์ตœ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ(skills/, agents/, โ€ฆ) ์•„๋ž˜์— ์ž์‹ ์˜ ์„œ๋ธŒ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  2. PR์„ ์—ด๊ธฐ ์ „์— ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ฒ€์ฆ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.
  3. ๋จธ์‹ ๋ณ„ ๋กœ์ปฌ ์ƒํƒœ๋Š” git์— ์˜ฌ๋ฆฌ์ง€ ๋งˆ์„ธ์š” โ€” .claude/settings.local.json ์€ ์ด๋ฏธ gitignore์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ˆ„์ถœ ํŒจํ„ด์„ ๋ฐœ๊ฒฌํ•˜๋ฉด .gitignore ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  4. ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ๋น„-Claude AI ๋„๊ตฌ์—๋„ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด README์˜ ๋„๊ตฌ๋ณ„ ํ‘œ์— ๋…ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.
  5. ์ƒˆ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋ฉด ์œ„์˜ ์•„์ดํ…œ ์ธ๋ฑ์Šค์— ํ–‰์„ ์ถ”๊ฐ€ํ•ด ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜์„ธ์š”.

AI ๋„๊ตฌ ์ง€์นจ ํŒŒ์ผ (CLAUDE.md, AGENTS.md, GEMINI.md, .github/copilot-instructions.md) ์€ ์˜๋„์ ์œผ๋กœ gitignore์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ "ํŒ€ ์ „์ฒด๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ณต์œ ํ•˜๋„๋ก CLAUDE.md ๋ฅผ ์ปค๋ฐ‹ํ•œ๋‹ค" ํŒจํ„ด์„ ์˜๋„์ ์œผ๋กœ ๊ฑฐ์Šค๋ฅด๋Š” ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. ๋ฉ”์ธํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋„๊ตฌ ์Šคํƒ๊ณผ ์ง€์นจ ์Šคํƒ€์ผ์ด ๋‹ฌ๋ผ, ๊ฐ ๊ธฐ์—ฌ์ž๊ฐ€ ์ด README๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์‹ ๋งŒ์˜ ๋กœ์ปฌ ๋ฒ„์ „์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. AI ๋„๊ตฌ๊ฐ€ claude /init (๋˜๋Š” ๋™๋“ฑํ•œ ๋ช…๋ น) ์œผ๋กœ CLAUDE.md ๋ฅผ ์ƒ์„ฑํ•ด๋„ ์กฐ์šฉํžˆ ๋ฌด์‹œ๋˜๋Š” ๊ฒƒ์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์ด README๊ฐ€ ์ •์‹ ๊ธฐ์—ฌ์ž ๋ฌธ์„œ์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ๊ฐ์ž ๋งž์ถค ์„ค์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

CC0 1.0 Universal์— ๋”ฐ๋ผ ํผ๋ธ”๋ฆญ ๋„๋ฉ”์ธ์— ํ—Œ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ•์ด ํ—ˆ์šฉํ•˜๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์ €์ž‘์ž๋Š” ์ด ์ €์ž‘๋ฌผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ €์ž‘๊ถŒ ๋ฐ ์ธ์ ‘ ๊ถŒ๋ฆฌ๋ฅผ ํฌ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํ—ˆ๊ฐ€ ์—†์ด ์ƒ์—…์  ๋ชฉ์ ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์šฉ๋„๋กœ ๋ณต์ œ, ์ˆ˜์ •, ๋ฐฐํฌ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์›๋ฌธ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

About

Various items for AI-driven development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors