원클릭으로
workflows-work
Execute work plans efficiently while maintaining quality and finishing features
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Execute work plans efficiently while maintaining quality and finishing features
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Generate clean, minimal technical SVG diagrams in a consistent Cloudflare-inspired style. Use when creating architecture diagrams, flow diagrams, or component diagrams for blog posts and documentation.
Guides creation and improvement of best-practice agent skills following the open format specification. Covers frontmatter, directory structure, progressive disclosure, reference files, rules folders, degrees of freedom, content patterns, executable scripts, MCP tool references, evaluations, cross-model testing, and a ten-dimension audit protocol for existing skills. Use when creating a new skill, authoring SKILL.md, setting up a rules-based audit skill, structuring a skill bundle, writing scripts inside a skill, evaluating a skill, improving or rewriting an existing skill, or asking "how to write a skill", "improve this skill", "audit my skill", or "review this SKILL.md".
Diagnoses Erivault application behavior across product docs, repo code, Cloudflare, Neon Postgres, queues, Durable Objects, R2 assets, AI Gateway, media workflows, browser, and mobile capture state. Use when investigating Erivault bugs, asking "what happened", checking logs, verifying deploys, debugging capture evidence, or designing testable diagnostics.
Design a new product module's full screen set in the Erivault `erivault-web` Paper file, reusing the established design system (tokens, shell, components) and grounded in the module's ADR + implementation plan. Covers researching the existing system, extracting authoritative tokens, planning the state×role×platform matrix, building screens via duplicate-and-adapt, and tying into existing surfaces. Use when designing a new module or surface (tenancies, inspections, renewals, capture, packs...) in Paper, extending the erivault-web design file, building all states/roles for a feature on web and mobile, or when the user says "design the X module", "design a new flow", "design X in the Paper board", "add the screens for X", or "make it consistent with our design system".
View and edit cmux settings in ~/.config/cmux/cmux.json. Use when the user wants to change cmux preferences (appearance, sidebar, notifications, automation, browser, shortcuts), set a value by JSON path, validate the file, open it in an editor, or look up which keys cmux recognizes. Triggers on '/cmux-settings', 'change cmux setting', 'set <something> in cmux', 'cmux config', 'cmux.json', or 'rebind a cmux shortcut'.
Perform exhaustive code reviews using multi-agent analysis and dynamic skill discovery
SOC 직업 분류 기준
| name | workflows-work |
| description | Execute work plans efficiently while maintaining quality and finishing features |
When this skill needs user questions, todo/progress tracking, subagents, or another skill, use the active runtime equivalents in RUNTIME_TOOLS.md.
This skill needs file read/write/edit access, search access, shell access, task-management/delegation support, skill-loading support, and a way to ask the user for decisions. Tool permissions are configured by the active agent runtime, not by this shared skill.
Adhere to the Builder Ethos (ETHOS.md): Boil the Lake, Search Before Building, User Sovereignty.
Execute a work plan efficiently while maintaining quality and finishing features.
This command takes a plan folder (containing spec.md and prd.json) and executes stories systematically. The focus is on shipping complete features by following the PRD story breakdown, respecting dependencies, and maintaining quality throughout.
$ARGUMENTS
Parse input: Split arguments into <path> and optional flags (--swarm).
If the path is empty, ask the user: "Which plan would you like to work on? Provide the folder path (e.g., docs/plans/2026-01-30-feat-user-auth/)."
If input is a folder: Look for prd.json insides If input is a file: Check if it's prd.json or spec.md, find sibling files
# List plan folder contents
ls -la <input_path>/
Read both files:
spec.md - For context, rationale, technical approachprd.json - For executable storiesIf prd.json doesn't exist:
/sm-plan to generate prd.jsonPRDs come in two variants. Detect and normalize before proceeding:
Schema detection:
If stories[0] has "passes" field (boolean):
→ Lightweight schema: passes=true means completed, passes=false means pending
→ depends_on may be missing (default to [])
→ acceptance_criteria may be missing (fall back to steps[])
→ log/completed_at/commit may be missing (initialize as needed)
If stories[0] has "status" field (string):
→ Full schema from /sm-plan — use as-is
Normalize each story to working state:
For each story:
story._effective_status =
if story.status exists → story.status
else if story.passes === true → "completed"
else → "pending"
story._effective_deps = story.depends_on ?? []
story._effective_criteria = story.acceptance_criteria ?? story.steps ?? []
Display current state:
Plan: [title]
Stories: [total] ([pending] pending, [in_progress] in progress, [completed] completed)
Next stories ready to execute:
#[id] [title] (priority: [priority])
#[id] [title] (priority: [priority])
Blocked stories:
#[id] [title] - blocked by #[depends_on]
Initialize log if missing:
If prd.json has no top-level log array, treat it as []. Only append log entries if the PRD already has one (don't bloat lightweight PRDs).
Create a progress item for every story in prd.json (mirrors full state to the active runtime's todo/task UI):
For each story in prd.json.stories:
create_progress_item({
subject: "Story #[id]: [title]",
description: "[category] | Priority: [priority]\n\nSteps:\n- [step1]\n- [step2]...\n\nAcceptance Criteria:\n- [criteria]",
activeForm: "Implementing story #[id]: [title]",
metadata: { story_id: [id], prd_path: "[path/to/prd.json]", category: "[category]" }
})
After creating all tasks, set up dependencies:
For each story with depends_on:
update_progress_item({
taskId: "[task_id]",
addBlockedBy: [task_ids of depends_on stories]
})
For already-completed stories (resuming a partial run):
If story._effective_status === "completed":
update_progress_item({ taskId: "[task_id]", status: "completed" })
Store the story_id → task_id mapping for use during execution.
Check if prd.json specifies a branch:
expected_branch=$(cat <input_path>/prd.json | jq -r '.branch // empty')
current_branch=$(git branch --show-current)
If prd.json has a branch field:
| Current State | Action |
|---|---|
current_branch === expected_branch | Proceed to Phase 3 |
expected_branch exists locally | Ask: "Switch to [expected_branch]?" then git checkout [expected_branch] |
expected_branch doesn't exist | Create it: git checkout -b [expected_branch] |
If branch mismatch and user declines to switch:
[current_branch] but prd.json expects [expected_branch]. Commits may not align with plan."If prd.json has no branch field, fall back to legacy behavior:
default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
# Fallback if remote HEAD isn't set
if [ -z "$default_branch" ]; then
default_branch=$(git rev-parse --verify origin/main >/dev/null 2>&1 && echo "main" || echo "master")
fi
If already on a feature branch (not the default branch):
[current_branch], or create a new branch?"If on the default branch, choose how to proceed:
Option A: Create a new branch
git pull origin [default_branch]
git checkout -b feature-branch-name
Use a meaningful name based on the work (e.g., feat/user-authentication, fix/email-validation).
Option B: Use a worktree (recommended for parallel development)
git worktree add ../{repo}--feature-branch-name -b feature-branch-name
# Use absolute paths for all subsequent commands: cd ../{repo}--feature-branch-name && ...
Option C: Continue on the default branch
Get next executable story (using normalized fields from Phase 1.2):
_effective_status === "pending"_effective_deps story IDs have _effective_status === "completed"priority ascendingIf no stories are ready but some are blocked, report the blockers.
while (executable stories remain):
1. SELECT next story (lowest priority, unblocked)
2. UPDATE prd.json + Launch subagent `system`:
- If full schema (has "status" field): set story.status = "in_progress"
- If lightweight schema (has "passes" field): no prd.json change (passes is boolean, no "in_progress" equivalent)
- If prd.json has "log" array: append { timestamp, story_id, action: "status_change", from: "pending", to: "in_progress" }
- update_progress_item({ taskId: "[mapped_task_id]", status: "in_progress" })
3. ANNOUNCE to user:
"Starting story #[id]: [title]"
Display acceptance criteria
4. LOAD SKILLS (hard gate — blocks Step 5):
If story.skills is non-empty, load every skill before writing any code.
Implementation MUST NOT begin until all skills are loaded.
For each skill in story.skills:
-> Call the runtime skill loader: load skill `name` with the active runtime skill loader
This is a prerequisite, not a suggestion. Skills discovered during
/workflows-deepen-plan encode domain expertise (design patterns, security
practices, framework idioms) that directly shape implementation.
Skipping them means building without the knowledge the plan assumed.
Verify: count of runtime skill loader calls == len(story.skills). If mismatch, stop and load missing skills.
5. IMPLEMENT:
- Read referenced files from spec.md
- Look for similar patterns in codebase
- Follow existing conventions
- Write tests for new functionality
- Run tests after changes
6. VERIFY acceptance criteria:
- Check each criterion is satisfied
- Run relevant tests
- If UI work, verify against design
6b. SIMPLIFY (fast pass before agents):
- Run `/simplify` on files changed in this story
- This is a quick, focused cleanup: reuse opportunities, quality, efficiency
- Runs BEFORE heavier validation agents to reduce noise they review
- If simplify makes changes, re-run tests to verify nothing broke
7. RUN validation agents:
- **For stories with code changes** (new/modified source files beyond prd.json):
- **Always run** these default agents in parallel:
```
Launch subagent `code-reviewer`: "Review implementation of story #[id]: [title]"
Launch subagent `code-simplifier`: "Review implementation of story #[id]: [title]"
```
- **Additionally run** any agents from story.validation_agents array (if present)
- Do NOT skip this step for code stories.
- **For operational stories** (deploys, verifications, config-only — no source code changes beyond prd.json):
- Skip default code-reviewer/code-simplifier (nothing meaningful to review)
- Still run any story-specific validation_agents if present
7a. HANDLE validation findings:
**If findings exist:**
- Log findings to prd.json story.review_findings[]
- Categorize by severity: P1 (critical), P2 (important), P3 (minor)
**For P1 (critical) findings:**
- MUST fix before proceeding
- Re-run validation after fix
- Loop until P1s resolved
**For P2 (important) findings:**
- Fix if quick (<5 min)
- Otherwise log to prd.json and continue
- Address in quality check phase
**For P3 (minor) findings:**
- Log to prd.json
- Continue (address later or ignore)
**Update prd.json:**
```json
{
"review_findings": [
{
"severity": "P2",
"agent": "security-sentinel",
"finding": "Input not sanitized",
"file": "src/api/users.ts:42",
"status": "logged",
"resolved_at": null
}
]
}
```
8. COMMIT (MANDATORY per story — every completed story gets its own commit):
- Do NOT defer or batch commits. Each story = one commit.
- Only exception: unresolved P1 findings from step 7a (fix first, then commit).
- **Operational stories** (deploys, verifications) still produce a committable artifact: the prd.json status update. "No source code changes" is never a reason to skip — prd.json IS the change.
```bash
git add <files for this story>
git commit -m "type(scope): [story title]"
```
Capture commit SHA
9. UPDATE prd.json + progress system (MANDATORY — ALWAYS runs after commit):
- This step is NOT optional. Every completed story must be marked done immediately.
- Update prd.json FIRST, then sync to the active runtime's todo/task UI. Steps 8 and 9 are atomic per story — complete both before moving to the next story.
- If full schema: set story.status = "completed", story.completed_at = ISO8601 now, story.commit = SHA
- If lightweight schema: set story.passes = true
- If prd.json has "log" array: append { timestamp, story_id, action: "status_change", from: "in_progress", to: "completed" }
- update_progress_item({ taskId: "[mapped_task_id]", status: "completed" })
- **Verify update:** Re-read prd.json to confirm the status change persisted
10. ANNOUNCE completion:
"Completed story #[id]: [title]"
Show remaining stories count
When updating prd.json, use atomic edits. Write back in the same schema variant as the source:
Full schema (from /sm-plan):
{ "status": "in_progress" }
{ "status": "completed", "completed_at": "2026-01-30T14:30:00Z", "commit": "abc123def" }
Lightweight schema (hand-written):
{ "passes": true }
No "in_progress" state — only flip passes to true on completion.
Log entry (only if prd.json already has a log array):
{
"timestamp": "2026-01-30T14:30:00Z",
"story_id": 1,
"action": "status_change",
"from": "pending",
"to": "in_progress"
}
If a story becomes blocked during implementation:
Default: One commit per completed story. Every story that passes verification (step 6) and agent review (step 7) gets committed immediately.
| Extra commits OK when... | Do NOT commit when... |
|---|---|
| Logical sub-unit complete within a large story | Story partially done |
| About to attempt risky/uncertain changes | Tests failing |
| About to switch contexts (backend → frontend) | Unresolved P1 findings |
Heuristic: Story done + agents passed + tests green = commit. No exceptions.
Only when --swarm is present in arguments. Replaces the sequential loop in Phase 3.2 with parallel subagent execution.
| Use Swarm when... | Stay Sequential when... |
|---|---|
| 5+ independent (unblocked) stories | Linear dependency chain |
| Stories touch different parts of codebase | Stories modify same files |
User explicitly requests --swarm | Simple/small plans |
_effective_depsFor each independent story:
launch_subagent({
description: "Implement story #[id]",
subagent_type: "general-purpose",
prompt: "You are implementing story #[id]: [title] from [prd_path].
Context: [paste relevant spec.md sections]
Steps:
- [step1]
- [step2]
Acceptance criteria:
- [criteria]
Instructions:
1. Read the codebase patterns for similar implementations
2. Implement following existing conventions
3. Write tests for new functionality
4. Run tests to verify
5. When done, report files changed and test results
Do NOT commit. Do NOT modify prd.json. Only implement and test.",
run_in_background: true
})
Run Core Quality Checks
# Run full test suite (use project's test command)
# Examples: npm test, pnpm test, vitest, jest, etc.
# Run linting (check package.json for lint script)
# Examples: npm run lint, pnpm lint, eslint ., etc.
Run Cross-Cutting Review Agents
code-reviewer and code-simplifier already ran per-story in step 7. These agents MUST run against the full changeset to catch cross-story issues:
performance-oracle with prompt ("Review full changeset for performance issues across all stories")security-sentinel with prompt ("Scan full changeset for security vulnerabilities across all stories")Launch both in parallel. Do not skip.
Final Validation
Final Commit (if uncommitted changes remain)
git add .
git status # Review what's being committed
git diff --staged # Check the changes
git commit -m "$(cat <<'EOF'
type(scope): complete [feature name]
Implements all stories from prd.json
EOF
)"
Update PRD Final State
Ensure prd.json reflects:
Notify User
# Full schema — get story statuses
cat <prd_path> | jq '.stories[] | {id, title, status, priority}'
# Lightweight schema — get story pass/fail
cat <prd_path> | jq '.stories[] | {id, title, passes, priority}'
# Get blocked stories (works for both — depends_on may not exist)
cat <prd_path> | jq '.stories[] | select(.status == "pending" or .passes == false) | select((.depends_on // []) | length > 0)'
# Get execution log (may not exist in lightweight PRDs)
cat <prd_path> | jq '.log // empty'
Full schema (has status string):
pending → in_progress → completed
↓
blocked → in_progress → completed
Lightweight schema (has passes boolean):
passes: false → passes: true
No intermediate states. The active runtime's todo/task UI tracks in_progress/blocked for lightweight PRDs.
Stories may include a skills array in prd.json:
"skills": ["frontend-design", "vercel-react-best-practices"]
These are loaded via the runtime skill loader in Phase 3, Step 4 — one load skill name with the active runtime skill loader call per entry.
This is mandatory and must happen before implementation begins.
This provides relevant guidance for the implementation.
If the input doesn't have prd.json:
/sm-plan to generate prd.json for future workbranch fieldbranch field