@friedbotstudio/create-baseline 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +222 -0
- package/bin/cli.js +247 -0
- package/obj/template/.claude/agents/swarm-worker.md +52 -0
- package/obj/template/.claude/bin/LICENSE +201 -0
- package/obj/template/.claude/bin/NOTICE +48 -0
- package/obj/template/.claude/commands/approve-spec.md +29 -0
- package/obj/template/.claude/commands/approve-swarm.md +27 -0
- package/obj/template/.claude/commands/grant-commit.md +19 -0
- package/obj/template/.claude/commands/init-project.md +191 -0
- package/obj/template/.claude/hooks/artifact_template_guard.sh +141 -0
- package/obj/template/.claude/hooks/consent_gate_grant.sh +89 -0
- package/obj/template/.claude/hooks/destructive_cmd_guard.sh +42 -0
- package/obj/template/.claude/hooks/env_guard.sh +36 -0
- package/obj/template/.claude/hooks/git_commit_guard.sh +93 -0
- package/obj/template/.claude/hooks/harness_continuation.sh +121 -0
- package/obj/template/.claude/hooks/lib/__pycache__/resume_writer.cpython-314.pyc +0 -0
- package/obj/template/.claude/hooks/lib/common.sh +328 -0
- package/obj/template/.claude/hooks/lib/resume_writer.py +341 -0
- package/obj/template/.claude/hooks/lint_runner.sh +55 -0
- package/obj/template/.claude/hooks/memory_pre_compact.sh +36 -0
- package/obj/template/.claude/hooks/memory_session_start.sh +244 -0
- package/obj/template/.claude/hooks/memory_stop.sh +173 -0
- package/obj/template/.claude/hooks/plantuml_syntax_guard.sh +161 -0
- package/obj/template/.claude/hooks/process_lifecycle_guard.sh +89 -0
- package/obj/template/.claude/hooks/setup_guard.sh +50 -0
- package/obj/template/.claude/hooks/spec_approval_guard.sh +81 -0
- package/obj/template/.claude/hooks/spec_design_calls_guard.sh +183 -0
- package/obj/template/.claude/hooks/spec_diagram_presence_guard.sh +141 -0
- package/obj/template/.claude/hooks/swarm_approval_guard.sh +39 -0
- package/obj/template/.claude/hooks/swarm_boundary_guard.sh +136 -0
- package/obj/template/.claude/hooks/tdd_order_guard.sh +176 -0
- package/obj/template/.claude/hooks/test_runner.sh +75 -0
- package/obj/template/.claude/hooks/tests/fixtures/ac008_byte_equal_reference.txt +12 -0
- package/obj/template/.claude/hooks/tests/memory_session_start_test.sh +285 -0
- package/obj/template/.claude/hooks/track_guard.sh +127 -0
- package/obj/template/.claude/hooks/verify_pass_guard.sh +88 -0
- package/obj/template/.claude/memory/README.md +108 -0
- package/obj/template/.claude/memory/_pending.md +15 -0
- package/obj/template/.claude/memory/_resume.md +12 -0
- package/obj/template/.claude/memory/conventions.md +26 -0
- package/obj/template/.claude/memory/decisions.md +29 -0
- package/obj/template/.claude/memory/landmarks.md +26 -0
- package/obj/template/.claude/memory/landmines.md +27 -0
- package/obj/template/.claude/memory/libraries.md +27 -0
- package/obj/template/.claude/memory/pending-questions.md +28 -0
- package/obj/template/.claude/project.json +221 -0
- package/obj/template/.claude/settings.json +110 -0
- package/obj/template/.claude/skills/archive/SKILL.md +48 -0
- package/obj/template/.claude/skills/archive/archive.sh +145 -0
- package/obj/template/.claude/skills/audit-baseline/SKILL.md +80 -0
- package/obj/template/.claude/skills/audit-baseline/audit.sh +919 -0
- package/obj/template/.claude/skills/brd/SKILL.md +44 -0
- package/obj/template/.claude/skills/brd/template.md +83 -0
- package/obj/template/.claude/skills/chore/SKILL.md +99 -0
- package/obj/template/.claude/skills/claude-automation-recommender/LICENSE +202 -0
- package/obj/template/.claude/skills/claude-automation-recommender/NOTICE +69 -0
- package/obj/template/.claude/skills/claude-automation-recommender/SKILL.md +358 -0
- package/obj/template/.claude/skills/claude-automation-recommender/references/hooks-patterns.md +226 -0
- package/obj/template/.claude/skills/claude-automation-recommender/references/mcp-servers.md +263 -0
- package/obj/template/.claude/skills/claude-automation-recommender/references/plugins-reference.md +98 -0
- package/obj/template/.claude/skills/claude-automation-recommender/references/skills-reference.md +408 -0
- package/obj/template/.claude/skills/claude-automation-recommender/references/subagent-templates.md +181 -0
- package/obj/template/.claude/skills/code-structure/SKILL.md +204 -0
- package/obj/template/.claude/skills/commit/SKILL.md +21 -0
- package/obj/template/.claude/skills/copywriting/SKILL.md +252 -0
- package/obj/template/.claude/skills/copywriting/evals/evals.json +111 -0
- package/obj/template/.claude/skills/copywriting/references/ai-writing-detection.md +200 -0
- package/obj/template/.claude/skills/copywriting/references/copy-frameworks.md +344 -0
- package/obj/template/.claude/skills/copywriting/references/natural-transitions.md +272 -0
- package/obj/template/.claude/skills/design-ui/SKILL.md +175 -0
- package/obj/template/.claude/skills/design-ui/references/design-vs-development.md +89 -0
- package/obj/template/.claude/skills/design-ui/references/intent-table.md +64 -0
- package/obj/template/.claude/skills/design-ui/references/orchestration.md +121 -0
- package/obj/template/.claude/skills/design-ui/references/state-machine.md +125 -0
- package/obj/template/.claude/skills/document/SKILL.md +66 -0
- package/obj/template/.claude/skills/documentation/SKILL.md +50 -0
- package/obj/template/.claude/skills/harness/SKILL.md +169 -0
- package/obj/template/.claude/skills/humanizer/SKILL.md +489 -0
- package/obj/template/.claude/skills/humanizer/references/ai-writing-detection.md +208 -0
- package/obj/template/.claude/skills/impeccable/PROJECT_NOTES.md +22 -0
- package/obj/template/.claude/skills/impeccable/SKILL.md +153 -0
- package/obj/template/.claude/skills/impeccable/agents/openai.yaml +4 -0
- package/obj/template/.claude/skills/impeccable/reference/adapt.md +190 -0
- package/obj/template/.claude/skills/impeccable/reference/animate.md +173 -0
- package/obj/template/.claude/skills/impeccable/reference/audit.md +134 -0
- package/obj/template/.claude/skills/impeccable/reference/bolder.md +113 -0
- package/obj/template/.claude/skills/impeccable/reference/brand.md +104 -0
- package/obj/template/.claude/skills/impeccable/reference/clarify.md +174 -0
- package/obj/template/.claude/skills/impeccable/reference/cognitive-load.md +106 -0
- package/obj/template/.claude/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/obj/template/.claude/skills/impeccable/reference/colorize.md +154 -0
- package/obj/template/.claude/skills/impeccable/reference/craft.md +138 -0
- package/obj/template/.claude/skills/impeccable/reference/critique.md +213 -0
- package/obj/template/.claude/skills/impeccable/reference/delight.md +302 -0
- package/obj/template/.claude/skills/impeccable/reference/distill.md +111 -0
- package/obj/template/.claude/skills/impeccable/reference/document.md +427 -0
- package/obj/template/.claude/skills/impeccable/reference/extract.md +70 -0
- package/obj/template/.claude/skills/impeccable/reference/harden.md +347 -0
- package/obj/template/.claude/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/obj/template/.claude/skills/impeccable/reference/interaction-design.md +195 -0
- package/obj/template/.claude/skills/impeccable/reference/layout.md +141 -0
- package/obj/template/.claude/skills/impeccable/reference/live.md +513 -0
- package/obj/template/.claude/skills/impeccable/reference/motion-design.md +99 -0
- package/obj/template/.claude/skills/impeccable/reference/onboard.md +234 -0
- package/obj/template/.claude/skills/impeccable/reference/optimize.md +258 -0
- package/obj/template/.claude/skills/impeccable/reference/overdrive.md +130 -0
- package/obj/template/.claude/skills/impeccable/reference/personas.md +178 -0
- package/obj/template/.claude/skills/impeccable/reference/polish.md +232 -0
- package/obj/template/.claude/skills/impeccable/reference/product.md +62 -0
- package/obj/template/.claude/skills/impeccable/reference/quieter.md +99 -0
- package/obj/template/.claude/skills/impeccable/reference/responsive-design.md +114 -0
- package/obj/template/.claude/skills/impeccable/reference/shape.md +136 -0
- package/obj/template/.claude/skills/impeccable/reference/spatial-design.md +100 -0
- package/obj/template/.claude/skills/impeccable/reference/teach.md +137 -0
- package/obj/template/.claude/skills/impeccable/reference/typeset.md +124 -0
- package/obj/template/.claude/skills/impeccable/reference/typography.md +159 -0
- package/obj/template/.claude/skills/impeccable/reference/ux-writing.md +107 -0
- package/obj/template/.claude/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/obj/template/.claude/skills/impeccable/scripts/command-metadata.json +94 -0
- package/obj/template/.claude/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/obj/template/.claude/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/obj/template/.claude/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-accept.mjs +465 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-browser.js +4684 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-inject.mjs +436 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-poll.mjs +187 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-server.mjs +679 -0
- package/obj/template/.claude/skills/impeccable/scripts/live-wrap.mjs +395 -0
- package/obj/template/.claude/skills/impeccable/scripts/live.mjs +247 -0
- package/obj/template/.claude/skills/impeccable/scripts/load-context.mjs +93 -0
- package/obj/template/.claude/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/obj/template/.claude/skills/impeccable/scripts/pin.mjs +214 -0
- package/obj/template/.claude/skills/implement/SKILL.md +83 -0
- package/obj/template/.claude/skills/intake/SKILL.md +46 -0
- package/obj/template/.claude/skills/intake/template.md +61 -0
- package/obj/template/.claude/skills/integrate/SKILL.md +62 -0
- package/obj/template/.claude/skills/memory-flush/SKILL.md +172 -0
- package/obj/template/.claude/skills/memory-flush/sweep.py +286 -0
- package/obj/template/.claude/skills/memory-flush/tests/run.sh +327 -0
- package/obj/template/.claude/skills/prose/SKILL.md +119 -0
- package/obj/template/.claude/skills/rca/SKILL.md +42 -0
- package/obj/template/.claude/skills/rca/template.md +83 -0
- package/obj/template/.claude/skills/research/SKILL.md +75 -0
- package/obj/template/.claude/skills/scenario/SKILL.md +64 -0
- package/obj/template/.claude/skills/scout/SKILL.md +72 -0
- package/obj/template/.claude/skills/security/SKILL.md +75 -0
- package/obj/template/.claude/skills/simplify/SKILL.md +67 -0
- package/obj/template/.claude/skills/spec/SKILL.md +69 -0
- package/obj/template/.claude/skills/spec/template.md +274 -0
- package/obj/template/.claude/skills/spec-diagram-review/SKILL.md +81 -0
- package/obj/template/.claude/skills/spec-lint/SKILL.md +55 -0
- package/obj/template/.claude/skills/spec-lint/lint.sh +218 -0
- package/obj/template/.claude/skills/spec-render/SKILL.md +45 -0
- package/obj/template/.claude/skills/spec-render/render.sh +109 -0
- package/obj/template/.claude/skills/spec-traceability-review/SKILL.md +72 -0
- package/obj/template/.claude/skills/swarm-dispatch/SKILL.md +212 -0
- package/obj/template/.claude/skills/swarm-dispatch/swarm_merge.sh +154 -0
- package/obj/template/.claude/skills/swarm-plan/SKILL.md +90 -0
- package/obj/template/.claude/skills/swarm-plan/validate.sh +181 -0
- package/obj/template/.claude/skills/tdd/SKILL.md +100 -0
- package/obj/template/.claude/skills/technical-tutorials/SKILL.md +569 -0
- package/obj/template/.claude/skills/technical-tutorials/references/audience-context-README.md +53 -0
- package/obj/template/.claude/skills/technical-tutorials/references/audience-context.md +246 -0
- package/obj/template/.claude/skills/technical-tutorials/references/audience-example.md +175 -0
- package/obj/template/.claude/skills/technical-tutorials/references/audience-template.md +152 -0
- package/obj/template/.claude/skills/triage/SKILL.md +55 -0
- package/obj/template/.claude/skills/verify/SKILL.md +74 -0
- package/obj/template/.mcp.json +24 -0
- package/obj/template/CLAUDE.md +327 -0
- package/obj/template/docs/init/seed.md +585 -0
- package/obj/template/manifest.json +214 -0
- package/package.json +48 -0
- package/src/.mcp.template.json +24 -0
- package/src/.npmrc.template +2 -0
- package/src/CLAUDE.template.md +327 -0
- package/src/agents/swarm-worker.template.md +51 -0
- package/src/cli/conflict.js +31 -0
- package/src/cli/doctor.js +152 -0
- package/src/cli/install.js +93 -0
- package/src/cli/io.js +27 -0
- package/src/cli/manifest.js +38 -0
- package/src/cli/mcp.js +54 -0
- package/src/cli/merge.js +107 -0
- package/src/cli/plantuml.js +121 -0
- package/src/cli/util.js +10 -0
- package/src/memory/_pending.template.md +15 -0
- package/src/memory/_resume.template.md +12 -0
- package/src/memory/conventions.template.md +26 -0
- package/src/memory/decisions.template.md +29 -0
- package/src/memory/landmarks.template.md +26 -0
- package/src/memory/landmines.template.md +27 -0
- package/src/memory/libraries.template.md +27 -0
- package/src/memory/pending-questions.template.md +28 -0
- package/src/project.template.json +221 -0
- package/src/seed.template.md +585 -0
- package/src/settings.template.json +110 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# developer-audience-context
|
|
2
|
+
|
|
3
|
+
**Foundation skill** — All other skills reference this first.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Creates and maintains `.claude/skills/developer-audience-context.md` — a single document capturing everything about your target developers. Define your audience once, and every other skill automatically has context.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Starting any developer marketing project
|
|
12
|
+
- Before running other skills (automatically referenced)
|
|
13
|
+
- When you say "developer persona," "target developers," "ICP," or "who are our developers"
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/developer-audience-context
|
|
19
|
+
|
|
20
|
+
Create our developer audience context. We're building an open source
|
|
21
|
+
API testing library for Node.js/TypeScript developers.
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The skill will either:
|
|
25
|
+
1. Auto-draft from your codebase (README, docs, landing pages)
|
|
26
|
+
2. Walk through 10 sections conversationally
|
|
27
|
+
|
|
28
|
+
## Files
|
|
29
|
+
|
|
30
|
+
| File | Description |
|
|
31
|
+
|------|-------------|
|
|
32
|
+
| `SKILL.md` | Full skill instructions |
|
|
33
|
+
| `references/template.md` | Blank template to fill out |
|
|
34
|
+
| `references/example-apitest.md` | Filled example for a fictional dev tool |
|
|
35
|
+
|
|
36
|
+
## The 10 Sections
|
|
37
|
+
|
|
38
|
+
1. **Product Overview** — Name, one-liner, category, tech, pricing
|
|
39
|
+
2. **Developer Persona** — Role, seniority, company size, tech stack
|
|
40
|
+
3. **Where They Hang Out** — Reddit, Discord, Twitter, podcasts, conferences
|
|
41
|
+
4. **Problems & Pain Points** — Functional, emotional, trigger moments
|
|
42
|
+
5. **Current Alternatives** — Competitors, DIY, do nothing
|
|
43
|
+
6. **Key Differentiators** — Technical, DX, ecosystem, philosophy
|
|
44
|
+
7. **Verbatim Developer Language** — Exact quotes, not polished copy
|
|
45
|
+
8. **Technical Trust Signals** — GitHub stars, downloads, notable users
|
|
46
|
+
9. **Conversion Actions** — Awareness → Activation → Conversion
|
|
47
|
+
10. **Voice & Tone** — How you sound when talking to developers
|
|
48
|
+
|
|
49
|
+
## Related Skills
|
|
50
|
+
|
|
51
|
+
Skills that reference this context:
|
|
52
|
+
|
|
53
|
+
- `technical-tutorials`
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Developer Audience Context (reference for `technical-tutorials`)
|
|
2
|
+
|
|
3
|
+
> **Note:** This file used to be a standalone skill (`developer-audience-context`). It was consolidated into `technical-tutorials` on 2026-04-28 because the only consumer was the tutorial author. Upstream YAML frontmatter and "this skill" framing removed; substance preserved verbatim. Apache 2.0 attribution: see `audience-context-README.md` in this directory for the original upstream README.
|
|
4
|
+
|
|
5
|
+
This document defines the audience profile a tutorial author needs before writing. Maintain a project-level copy at `audience-context.md` (or wherever your project tracks developer-marketing context); reference it from every tutorial draft so the audience is defined once and reused.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Before You Start
|
|
10
|
+
|
|
11
|
+
Check if `.claude/skills/developer-audience-context.md` exists:
|
|
12
|
+
|
|
13
|
+
- **If it exists**: Read it and offer to update specific sections
|
|
14
|
+
- **If it doesn't exist**: Create the directory and file, then walk through each section
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Two Ways to Build Context
|
|
19
|
+
|
|
20
|
+
### Option 1: Auto-Draft from Codebase (Recommended)
|
|
21
|
+
|
|
22
|
+
Analyze existing materials to draft an initial version:
|
|
23
|
+
|
|
24
|
+
1. **README.md** — Product description, features, getting started
|
|
25
|
+
2. **Documentation** — `/docs`, API reference, tutorials
|
|
26
|
+
3. **Landing pages** — `index.html`, marketing copy
|
|
27
|
+
4. **package.json / pyproject.toml** — Dependencies reveal ecosystem
|
|
28
|
+
5. **GitHub Issues** — Common questions, frustrations, use cases
|
|
29
|
+
6. **Existing blog posts** — Technical content, tutorials
|
|
30
|
+
|
|
31
|
+
After drafting, walk through each section to validate and fill gaps.
|
|
32
|
+
|
|
33
|
+
### Option 2: Start from Scratch
|
|
34
|
+
|
|
35
|
+
Ask questions section-by-section. Don't advance until the current section is complete.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## The 10 Sections to Capture
|
|
40
|
+
|
|
41
|
+
### 1. Product Overview
|
|
42
|
+
|
|
43
|
+
| Field | What to capture |
|
|
44
|
+
|-------|-----------------|
|
|
45
|
+
| Product name | Official name and any aliases |
|
|
46
|
+
| One-liner | "We help [developers] do [X] without [Y]" |
|
|
47
|
+
| Category | API, SDK, CLI, SaaS, open source library, infrastructure |
|
|
48
|
+
| Core technology | Languages, frameworks, platforms supported |
|
|
49
|
+
| Pricing model | Free/open source, freemium, usage-based, seat-based |
|
|
50
|
+
|
|
51
|
+
### 2. Developer Persona
|
|
52
|
+
|
|
53
|
+
Not "developers" generically — get specific:
|
|
54
|
+
|
|
55
|
+
| Field | What to capture |
|
|
56
|
+
|-------|-----------------|
|
|
57
|
+
| Primary role | Backend, frontend, full-stack, DevOps, data, ML, mobile |
|
|
58
|
+
| Seniority | Junior, mid, senior, staff, lead, architect |
|
|
59
|
+
| Company size | Solo, startup, scale-up, enterprise |
|
|
60
|
+
| Industry verticals | Fintech, healthtech, e-commerce, gaming, B2B SaaS |
|
|
61
|
+
| Tech stack | Languages, frameworks, cloud providers they use |
|
|
62
|
+
| Decision authority | Individual contributor, team lead, buyer, influencer |
|
|
63
|
+
|
|
64
|
+
**Ask**: "Describe the developer who gets the most value from your product in one paragraph. What's their day-to-day like?"
|
|
65
|
+
|
|
66
|
+
### 3. Where They Hang Out
|
|
67
|
+
|
|
68
|
+
Developers research before they buy. Know where:
|
|
69
|
+
|
|
70
|
+
| Channel | Specifics to capture |
|
|
71
|
+
|---------|---------------------|
|
|
72
|
+
| Communities | Specific subreddits, Discord servers, Slack groups |
|
|
73
|
+
| Social | Twitter/X hashtags, LinkedIn groups |
|
|
74
|
+
| Content | Blogs they read, newsletters they subscribe to, podcasts |
|
|
75
|
+
| Events | Conferences, meetups, hackathons |
|
|
76
|
+
| Code | GitHub topics, Stack Overflow tags |
|
|
77
|
+
|
|
78
|
+
**Pro tip**: Use social listening tools to monitor conversations across Hacker News, Reddit, Stack Overflow, GitHub, and Twitter. See where discussions about your problem space happen organically.
|
|
79
|
+
|
|
80
|
+
### 4. Problems & Pain Points
|
|
81
|
+
|
|
82
|
+
Capture the actual problems, not your solution's features:
|
|
83
|
+
|
|
84
|
+
| Level | What to capture |
|
|
85
|
+
|-------|-----------------|
|
|
86
|
+
| Functional | "I can't do X" / "X takes too long" / "X is error-prone" |
|
|
87
|
+
| Emotional | Frustration, anxiety, embarrassment, fear |
|
|
88
|
+
| Situational | When does the pain occur? What triggers the search? |
|
|
89
|
+
|
|
90
|
+
**Ask**: "What's the #1 frustration that brings developers to you?"
|
|
91
|
+
|
|
92
|
+
**Research**: Search Reddit, Hacker News, and Stack Overflow for complaints about your problem space. Capture verbatim quotes.
|
|
93
|
+
|
|
94
|
+
### 5. Current Alternatives
|
|
95
|
+
|
|
96
|
+
What are developers using today instead of you?
|
|
97
|
+
|
|
98
|
+
| Alternative type | Examples |
|
|
99
|
+
|-----------------|----------|
|
|
100
|
+
| Direct competitors | Tools that solve the same problem |
|
|
101
|
+
| DIY / build it yourself | Custom scripts, internal tools |
|
|
102
|
+
| Indirect solutions | Workarounds, manual processes |
|
|
103
|
+
| Do nothing | Live with the pain |
|
|
104
|
+
|
|
105
|
+
For each alternative, capture:
|
|
106
|
+
- Why developers choose it
|
|
107
|
+
- What's frustrating about it
|
|
108
|
+
- What would make them switch
|
|
109
|
+
|
|
110
|
+
### 6. Key Differentiators
|
|
111
|
+
|
|
112
|
+
What makes you different — in developer terms:
|
|
113
|
+
|
|
114
|
+
| Differentiator type | Example |
|
|
115
|
+
|--------------------|---------|
|
|
116
|
+
| Technical | "10x faster," "No dependencies," "Type-safe" |
|
|
117
|
+
| DX (Developer Experience) | "5-minute setup," "Great docs," "First-class CLI" |
|
|
118
|
+
| Ecosystem | "Works with X," "Built for Y framework" |
|
|
119
|
+
| Philosophy | "Open source," "Privacy-first," "Local-first" |
|
|
120
|
+
|
|
121
|
+
**Warning**: Avoid marketing fluff. Developers see through "best-in-class" and "enterprise-grade." Use specific, provable claims.
|
|
122
|
+
|
|
123
|
+
### 7. Verbatim Developer Language
|
|
124
|
+
|
|
125
|
+
Capture exact phrases developers use — not polished marketing copy:
|
|
126
|
+
|
|
127
|
+
| Category | Examples |
|
|
128
|
+
|----------|----------|
|
|
129
|
+
| Describing the problem | "This is such a pain," "I wish I could just..." |
|
|
130
|
+
| Describing your product | How they explain it to others |
|
|
131
|
+
| Objections | "But what about...", "I'm worried that..." |
|
|
132
|
+
| Praise | Testimonials, tweets, GitHub comments |
|
|
133
|
+
|
|
134
|
+
**Sources**: GitHub issues, Twitter mentions, Hacker News comments, support tickets, sales calls, community Slack/Discord.
|
|
135
|
+
|
|
136
|
+
### 8. Technical Trust Signals
|
|
137
|
+
|
|
138
|
+
What proof points matter to developers:
|
|
139
|
+
|
|
140
|
+
| Signal type | Examples |
|
|
141
|
+
|-------------|----------|
|
|
142
|
+
| Adoption | GitHub stars, npm downloads, Docker pulls |
|
|
143
|
+
| Quality | Test coverage, security audits, uptime SLA |
|
|
144
|
+
| Community | Contributors, Discord members, forum activity |
|
|
145
|
+
| Credibility | Backed by X, used by Y, created by Z |
|
|
146
|
+
| Transparency | Open source, public roadmap, changelog |
|
|
147
|
+
|
|
148
|
+
### 9. Conversion Actions
|
|
149
|
+
|
|
150
|
+
What does success look like at each stage?
|
|
151
|
+
|
|
152
|
+
| Stage | Primary action | Secondary actions |
|
|
153
|
+
|-------|---------------|-------------------|
|
|
154
|
+
| Awareness | Star repo, follow on Twitter | Read blog post, share content |
|
|
155
|
+
| Consideration | Clone repo, read docs | Watch demo, join Discord |
|
|
156
|
+
| Trial | Sign up, install SDK | Complete quickstart, make first API call |
|
|
157
|
+
| Activation | Reach "Hello World" moment | Integrate into real project |
|
|
158
|
+
| Conversion | Upgrade to paid | Add team members, expand usage |
|
|
159
|
+
|
|
160
|
+
### 10. Voice & Tone
|
|
161
|
+
|
|
162
|
+
How should you sound when talking to these developers?
|
|
163
|
+
|
|
164
|
+
| Dimension | Spectrum |
|
|
165
|
+
|-----------|----------|
|
|
166
|
+
| Formality | Casual ← → Professional |
|
|
167
|
+
| Technicality | Accessible ← → Deep technical |
|
|
168
|
+
| Personality | Neutral ← → Opinionated |
|
|
169
|
+
| Humor | Serious ← → Playful |
|
|
170
|
+
|
|
171
|
+
**Examples**:
|
|
172
|
+
- Stripe → Professional, precise, clean
|
|
173
|
+
- Vercel → Modern, confident, developer-first
|
|
174
|
+
- Supabase → Friendly, accessible, community-driven
|
|
175
|
+
- Tailwind → Opinionated, direct, practical
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Output Format
|
|
180
|
+
|
|
181
|
+
Save to `.claude/skills/developer-audience-context.md` with this structure:
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
# Developer Audience Context
|
|
185
|
+
|
|
186
|
+
Last updated: [DATE]
|
|
187
|
+
|
|
188
|
+
## Product Overview
|
|
189
|
+
[Section content]
|
|
190
|
+
|
|
191
|
+
## Developer Persona
|
|
192
|
+
[Section content]
|
|
193
|
+
|
|
194
|
+
## Where They Hang Out
|
|
195
|
+
[Section content]
|
|
196
|
+
|
|
197
|
+
## Problems & Pain Points
|
|
198
|
+
[Section content]
|
|
199
|
+
|
|
200
|
+
## Current Alternatives
|
|
201
|
+
[Section content]
|
|
202
|
+
|
|
203
|
+
## Key Differentiators
|
|
204
|
+
[Section content]
|
|
205
|
+
|
|
206
|
+
## Verbatim Developer Language
|
|
207
|
+
[Section content]
|
|
208
|
+
|
|
209
|
+
## Technical Trust Signals
|
|
210
|
+
[Section content]
|
|
211
|
+
|
|
212
|
+
## Conversion Actions
|
|
213
|
+
[Section content]
|
|
214
|
+
|
|
215
|
+
## Voice & Tone
|
|
216
|
+
[Section content]
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Maintenance
|
|
222
|
+
|
|
223
|
+
Update this document when:
|
|
224
|
+
|
|
225
|
+
- You learn something new from user research
|
|
226
|
+
- You find great verbatim quotes
|
|
227
|
+
- Your positioning or differentiation changes
|
|
228
|
+
- You expand to new developer segments
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Tools
|
|
233
|
+
|
|
234
|
+
| Tool | Use case |
|
|
235
|
+
|------|----------|
|
|
236
|
+
| **GitHub Search** | Find how developers describe problems in issues |
|
|
237
|
+
| **Twitter Advanced Search** | Find discussions about your space |
|
|
238
|
+
| **Google Alerts** | Track mentions of competitors and problem keywords |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Related Skills
|
|
243
|
+
|
|
244
|
+
After establishing context, these skills will reference it:
|
|
245
|
+
|
|
246
|
+
- `technical-tutorials` — Writing technical tutorials for developers
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Developer Audience Context
|
|
2
|
+
|
|
3
|
+
Last updated: 2024-01-15
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Product Overview
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
|-------|-------|
|
|
11
|
+
| **Product name** | Checkmate (fictional example) |
|
|
12
|
+
| **One-liner** | We help backend developers write API tests without learning a new DSL |
|
|
13
|
+
| **Category** | CLI + Open source library |
|
|
14
|
+
| **Core technology** | TypeScript, works with any Node.js project |
|
|
15
|
+
| **Pricing model** | Open source core, paid cloud dashboard for teams |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Developer Persona
|
|
20
|
+
|
|
21
|
+
| Field | Value |
|
|
22
|
+
|-------|-------|
|
|
23
|
+
| **Primary role** | Backend / Full-stack |
|
|
24
|
+
| **Seniority** | Mid to Senior (2-8 years experience) |
|
|
25
|
+
| **Company size** | Startup to Scale-up (10-500 employees) |
|
|
26
|
+
| **Industry verticals** | B2B SaaS, Fintech, E-commerce |
|
|
27
|
+
| **Tech stack** | Node.js, TypeScript, Express/Fastify, PostgreSQL, REST APIs |
|
|
28
|
+
| **Decision authority** | Individual contributor who influences tooling decisions |
|
|
29
|
+
|
|
30
|
+
**Day-in-the-life**:
|
|
31
|
+
> Sarah is a senior backend engineer at a Series B fintech startup. She spends most of her day writing and reviewing API code. She knows they should have better test coverage but the existing test setup is brittle and slow. Every time she tries to add tests, she spends more time fighting the test framework than writing actual tests. She's evaluated Postman and other tools but doesn't want to maintain tests in a separate GUI. She wants tests that live in her codebase and run in CI.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Where They Hang Out
|
|
36
|
+
|
|
37
|
+
| Channel | Specific places |
|
|
38
|
+
|---------|-----------------|
|
|
39
|
+
| **Reddit** | r/node, r/typescript, r/webdev, r/ExperiencedDevs |
|
|
40
|
+
| **Discord/Slack** | Reactiflux, TypeScript Community, various company Slacks |
|
|
41
|
+
| **Twitter/X** | #typescript, #nodejs, follows @sindresorhus, @maaboroosh, @benloeb |
|
|
42
|
+
| **Newsletters** | Node Weekly, JavaScript Weekly, bytes.dev |
|
|
43
|
+
| **Podcasts** | Syntax.fm, JS Party, The Changelog |
|
|
44
|
+
| **Blogs** | Dev.to, Kent C. Dodds, Testing JavaScript |
|
|
45
|
+
| **Conferences** | NodeConf, TSConf, local JavaScript meetups |
|
|
46
|
+
| **GitHub** | Topics: testing, api-testing, typescript |
|
|
47
|
+
| **Stack Overflow** | Tags: node.js, typescript, api-testing, jest, vitest |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Problems & Pain Points
|
|
52
|
+
|
|
53
|
+
### Functional problems
|
|
54
|
+
- Existing test setups are slow and flaky
|
|
55
|
+
- Learning curve for testing frameworks is steep
|
|
56
|
+
- Mocking APIs and databases is painful
|
|
57
|
+
- Tests don't catch the bugs that actually matter
|
|
58
|
+
- CI runs take forever because of integration tests
|
|
59
|
+
|
|
60
|
+
### Emotional pain
|
|
61
|
+
- Embarrassment when production bugs could have been caught by tests
|
|
62
|
+
- Frustration with test maintenance overhead
|
|
63
|
+
- Anxiety about shipping without confidence
|
|
64
|
+
- Guilt about skipping tests due to time pressure
|
|
65
|
+
|
|
66
|
+
### Trigger moments
|
|
67
|
+
- Just shipped a bug that tests would have caught
|
|
68
|
+
- New team member asks "where are the tests?"
|
|
69
|
+
- CI is taking 20+ minutes
|
|
70
|
+
- Tried to refactor code and broke everything
|
|
71
|
+
|
|
72
|
+
**#1 frustration that brings developers to us**:
|
|
73
|
+
> "I want to test my APIs but I don't want to spend a week learning a new framework and setting up fixtures. Just let me write tests that look like the code I'm already writing."
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Current Alternatives
|
|
78
|
+
|
|
79
|
+
| Alternative | Why devs choose it | What's frustrating | Switching triggers |
|
|
80
|
+
|-------------|-------------------|-------------------|-------------------|
|
|
81
|
+
| **Jest + Supertest** | Already using Jest, Supertest is simple | Slow, verbose setup, bad TypeScript support | Speed issues, TypeScript errors |
|
|
82
|
+
| **Postman/Insomnia** | Visual, easy to start | Tests live outside codebase, hard to version control | Need tests in CI, team scaling |
|
|
83
|
+
| **Playwright/Cypress** | Powerful, good DX | Overkill for API testing, slow | Just need API tests, not E2E |
|
|
84
|
+
| **Build it themselves** | Full control | Maintenance burden, reinventing the wheel | Team grows, need standards |
|
|
85
|
+
| **Do nothing** | No time investment | Bugs in production, no confidence | Major incident, new compliance requirement |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Key Differentiators
|
|
90
|
+
|
|
91
|
+
| Type | Our claim | Proof |
|
|
92
|
+
|------|-----------|-------|
|
|
93
|
+
| **Technical** | 10x faster than Jest+Supertest | Benchmark: 500 tests in 2s vs 20s |
|
|
94
|
+
| **DX** | Zero-config TypeScript support | Just `npm install`, no setup |
|
|
95
|
+
| **Ecosystem** | Works with your existing test runner | Vitest, Jest, Node test runner |
|
|
96
|
+
| **Philosophy** | Tests should look like your code | No DSL, just TypeScript |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Verbatim Developer Language
|
|
101
|
+
|
|
102
|
+
### How they describe the problem
|
|
103
|
+
> "Testing APIs shouldn't be this hard"
|
|
104
|
+
> "I just want to make a request and check the response"
|
|
105
|
+
> "Why do I need 50 lines of setup for one test?"
|
|
106
|
+
> "Our test suite takes 15 minutes to run"
|
|
107
|
+
|
|
108
|
+
### How they describe our product
|
|
109
|
+
> "It's like if fetch() was designed for testing"
|
|
110
|
+
> "Finally, API tests that don't suck"
|
|
111
|
+
> "The TypeScript support is *chef's kiss*"
|
|
112
|
+
|
|
113
|
+
### Common objections
|
|
114
|
+
> "What about when I need to mock the database?"
|
|
115
|
+
> "Will this work with our existing Jest setup?"
|
|
116
|
+
> "We're already invested in Postman"
|
|
117
|
+
> "Is this maintained? I don't want to depend on an abandoned project"
|
|
118
|
+
|
|
119
|
+
### Praise / testimonials
|
|
120
|
+
> "Migrated 200 tests in an afternoon. CI went from 12 minutes to 90 seconds." — @devname on Twitter
|
|
121
|
+
> "Best testing DX I've experienced in 10 years of backend work." — GitHub issue #142
|
|
122
|
+
|
|
123
|
+
**Sources**: GitHub issues, Twitter mentions, Hacker News launch thread, support Discord
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Technical Trust Signals
|
|
128
|
+
|
|
129
|
+
| Signal | Current value |
|
|
130
|
+
|--------|---------------|
|
|
131
|
+
| **GitHub stars** | 3,200 |
|
|
132
|
+
| **npm downloads** | 45k/week |
|
|
133
|
+
| **Contributors** | 28 |
|
|
134
|
+
| **Community size** | Discord: 1,200 members |
|
|
135
|
+
| **Notable users** | Vercel, Linear, Cal.com |
|
|
136
|
+
| **Backed by** | YC W24 |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Conversion Actions
|
|
141
|
+
|
|
142
|
+
| Stage | Primary action | Secondary actions |
|
|
143
|
+
|-------|---------------|-------------------|
|
|
144
|
+
| **Awareness** | Star repo | Read blog post, follow on Twitter |
|
|
145
|
+
| **Consideration** | Read docs/quickstart | Watch 5-min demo, join Discord |
|
|
146
|
+
| **Trial** | `npm install checkmate` | Run first test |
|
|
147
|
+
| **Activation** | Migrate 1 existing test | Add to CI |
|
|
148
|
+
| **Conversion** | Sign up for cloud dashboard | Add team members |
|
|
149
|
+
|
|
150
|
+
**"Hello World" moment**:
|
|
151
|
+
> Developer runs their first test and sees it pass in <100ms. They think "wait, that's it?" Then they look at the TypeScript autocomplete and realize they get full type safety on their API responses.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Voice & Tone
|
|
156
|
+
|
|
157
|
+
| Dimension | Our position (1-5) |
|
|
158
|
+
|-----------|-------------------|
|
|
159
|
+
| Casual ← → Professional | 2 (casual but competent) |
|
|
160
|
+
| Accessible ← → Deep technical | 4 (assume backend knowledge) |
|
|
161
|
+
| Neutral ← → Opinionated | 4 (we have opinions about testing) |
|
|
162
|
+
| Serious ← → Playful | 3 (occasional humor, not try-hard) |
|
|
163
|
+
|
|
164
|
+
**Voice inspiration** (brands/people to emulate):
|
|
165
|
+
- Tailwind (opinionated but practical)
|
|
166
|
+
- Vitest (modern, fast, developer-first)
|
|
167
|
+
- tRPC (TypeScript-native thinking)
|
|
168
|
+
|
|
169
|
+
**Words we use**:
|
|
170
|
+
- Fast, simple, TypeScript-native, zero-config, real tests
|
|
171
|
+
- "Just works", "designed for", "built by developers"
|
|
172
|
+
|
|
173
|
+
**Words we avoid**:
|
|
174
|
+
- Enterprise-grade, best-in-class, revolutionary, game-changing
|
|
175
|
+
- Anything that sounds like marketing fluff
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Developer Audience Context
|
|
2
|
+
|
|
3
|
+
Last updated: [DATE]
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Product Overview
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
|-------|-------|
|
|
11
|
+
| **Product name** | |
|
|
12
|
+
| **One-liner** | We help [developers] do [X] without [Y] |
|
|
13
|
+
| **Category** | API / SDK / CLI / SaaS / Open source library / Infrastructure |
|
|
14
|
+
| **Core technology** | |
|
|
15
|
+
| **Pricing model** | Free / Open source / Freemium / Usage-based / Seat-based |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Developer Persona
|
|
20
|
+
|
|
21
|
+
| Field | Value |
|
|
22
|
+
|-------|-------|
|
|
23
|
+
| **Primary role** | Backend / Frontend / Full-stack / DevOps / Data / ML / Mobile |
|
|
24
|
+
| **Seniority** | Junior / Mid / Senior / Staff / Lead / Architect |
|
|
25
|
+
| **Company size** | Solo / Startup / Scale-up / Enterprise |
|
|
26
|
+
| **Industry verticals** | |
|
|
27
|
+
| **Tech stack** | |
|
|
28
|
+
| **Decision authority** | Individual contributor / Team lead / Buyer / Influencer |
|
|
29
|
+
|
|
30
|
+
**Day-in-the-life**:
|
|
31
|
+
> [Describe your ideal developer's typical day and challenges]
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Where They Hang Out
|
|
36
|
+
|
|
37
|
+
| Channel | Specific places |
|
|
38
|
+
|---------|-----------------|
|
|
39
|
+
| **Reddit** | r/ |
|
|
40
|
+
| **Discord/Slack** | |
|
|
41
|
+
| **Twitter/X** | # hashtags, @accounts |
|
|
42
|
+
| **Newsletters** | |
|
|
43
|
+
| **Podcasts** | |
|
|
44
|
+
| **Blogs** | |
|
|
45
|
+
| **Conferences** | |
|
|
46
|
+
| **GitHub** | Topics: |
|
|
47
|
+
| **Stack Overflow** | Tags: |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Problems & Pain Points
|
|
52
|
+
|
|
53
|
+
### Functional problems
|
|
54
|
+
- [ ]
|
|
55
|
+
|
|
56
|
+
### Emotional pain
|
|
57
|
+
- [ ]
|
|
58
|
+
|
|
59
|
+
### Trigger moments
|
|
60
|
+
- [ ]
|
|
61
|
+
|
|
62
|
+
**#1 frustration that brings developers to us**:
|
|
63
|
+
>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Current Alternatives
|
|
68
|
+
|
|
69
|
+
| Alternative | Why devs choose it | What's frustrating | Switching triggers |
|
|
70
|
+
|-------------|-------------------|-------------------|-------------------|
|
|
71
|
+
| | | | |
|
|
72
|
+
| | | | |
|
|
73
|
+
| Build it themselves | | | |
|
|
74
|
+
| Do nothing | | | |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Key Differentiators
|
|
79
|
+
|
|
80
|
+
| Type | Our claim | Proof |
|
|
81
|
+
|------|-----------|-------|
|
|
82
|
+
| **Technical** | | |
|
|
83
|
+
| **DX** | | |
|
|
84
|
+
| **Ecosystem** | | |
|
|
85
|
+
| **Philosophy** | | |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Verbatim Developer Language
|
|
90
|
+
|
|
91
|
+
### How they describe the problem
|
|
92
|
+
>
|
|
93
|
+
|
|
94
|
+
### How they describe our product
|
|
95
|
+
>
|
|
96
|
+
|
|
97
|
+
### Common objections
|
|
98
|
+
>
|
|
99
|
+
|
|
100
|
+
### Praise / testimonials
|
|
101
|
+
>
|
|
102
|
+
|
|
103
|
+
**Sources**: GitHub issues, Twitter, Hacker News, support tickets, sales calls
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Technical Trust Signals
|
|
108
|
+
|
|
109
|
+
| Signal | Current value |
|
|
110
|
+
|--------|---------------|
|
|
111
|
+
| **GitHub stars** | |
|
|
112
|
+
| **npm/PyPI downloads** | |
|
|
113
|
+
| **Docker pulls** | |
|
|
114
|
+
| **Contributors** | |
|
|
115
|
+
| **Community size** | Discord: / Slack: |
|
|
116
|
+
| **Notable users** | |
|
|
117
|
+
| **Backed by** | |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Conversion Actions
|
|
122
|
+
|
|
123
|
+
| Stage | Primary action | Secondary actions |
|
|
124
|
+
|-------|---------------|-------------------|
|
|
125
|
+
| **Awareness** | | |
|
|
126
|
+
| **Consideration** | | |
|
|
127
|
+
| **Trial** | | |
|
|
128
|
+
| **Activation** | | |
|
|
129
|
+
| **Conversion** | | |
|
|
130
|
+
|
|
131
|
+
**"Hello World" moment**:
|
|
132
|
+
> [What's the moment developers feel they've succeeded?]
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Voice & Tone
|
|
137
|
+
|
|
138
|
+
| Dimension | Our position (1-5) |
|
|
139
|
+
|-----------|-------------------|
|
|
140
|
+
| Casual ← → Professional | |
|
|
141
|
+
| Accessible ← → Deep technical | |
|
|
142
|
+
| Neutral ← → Opinionated | |
|
|
143
|
+
| Serious ← → Playful | |
|
|
144
|
+
|
|
145
|
+
**Voice inspiration** (brands/people to emulate):
|
|
146
|
+
-
|
|
147
|
+
|
|
148
|
+
**Words we use**:
|
|
149
|
+
-
|
|
150
|
+
|
|
151
|
+
**Words we avoid**:
|
|
152
|
+
-
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: triage
|
|
3
|
+
owner: baseline
|
|
4
|
+
description: Triage an incoming request — pick the workflow entry phase (intake / spec / tdd / chore) and record the workflow statefile that the Track Guard reads.
|
|
5
|
+
argument-hint: "<request in plain English>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Triage the user's request and set up `.claude/state/workflow.json` so downstream phase skills and the Track Guard hook know which track we're on.
|
|
9
|
+
|
|
10
|
+
# Decision rules (per seed.md)
|
|
11
|
+
|
|
12
|
+
- **New implementation / feature**: entry = `intake`. Full 11-phase pipeline.
|
|
13
|
+
- **Bugfix**: entry = `spec` (Phase 4) OR `tdd` (Phase 6), depending on whether the bug needs a written spec. Ask if unclear; default to `spec` when the bug affects contract/behaviour and `tdd` when it's a localized misbehaviour with a known failing case.
|
|
14
|
+
- **Quickfix** (typo across multiple files, multi-file config tweak, small bundled patch): entry = `tdd`. May also mark phases `intake`, `scout`, `research`, `spec`, `review` as exceptions.
|
|
15
|
+
- **Chore** (no TDD-driven code change needed): entry = `chore`. Choose chore when the request has no failing-test-driven code change — documentation edits, governance count refreshes, vendored-skill content updates, configuration tweaks, formatting / typo fixes, dependency bumps where no project code changes, skill consolidation moves, file renames with no behaviour change. The classification rule is *"if there's no failing test that should exist for this work, it's a chore"*. Mark `intake` / `brd` / `scout` / `research` / `spec` / `review` / `tdd` as exceptions in `workflow.json`; **leave `simplify`, `security`, `integrate`, `document`, `archive` and `commit` in the phase list** — the chore skill itself decides which of those phases to actually run based on its conditional triggers (it does not silently skip them). If the request needs a failing test to drive correctness, route to `tdd` or higher instead.
|
|
16
|
+
|
|
17
|
+
# Steps
|
|
18
|
+
|
|
19
|
+
1. Restate the request back to the user in 1-2 sentences, and name the entry phase you've chosen and why.
|
|
20
|
+
2. **Git-repo detection (mandatory).** Run `git rev-parse --is-inside-work-tree 2>/dev/null` at the project root. If the exit status is non-zero, the project is not a git repository: gate C / `commit` are inapplicable AND the swarm path is unavailable because worktree isolation (the swarm contract's physical safety mechanism) requires git (CLAUDE.md Article IV "Phase 6c and Phase 11 are git-conditional", Article VII). Append `"swarm-plan"`, `"approve-swarm"`, `"swarm-dispatch"`, `"grant-commit"`, and `"commit"` to the exceptions array you'll write in step 4. Tell the user: "Non-git project detected — `swarm-plan`, `approve-swarm`, `swarm-dispatch`, `grant-commit`, and `commit` auto-excepted. Phase 6 routes to solo `/tdd`. Workflow ends after `/archive`. Persistence outside git is your responsibility."
|
|
21
|
+
3. If the user has not confirmed yet, ask: "Entry phase = <X>. Exceptions = <Y>. Proceed? (or tell me a different entry)"
|
|
22
|
+
4. On confirmation, write `.claude/state/workflow.json`:
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"request": "<the request>",
|
|
26
|
+
"entry_phase": "<intake|spec|tdd|chore>",
|
|
27
|
+
"exceptions": ["<phase>", ...],
|
|
28
|
+
"completed": [],
|
|
29
|
+
"created_at": <epoch>,
|
|
30
|
+
"updated_at": <epoch>
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
5. **Seed the workflow tasklist.** Use the `TaskCreate` tool to register one task per non-excepted phase plus each applicable consent gate. The tasks are the running checklist that `/harness` (or any direct phase invocation) reads to decide the next action; consent-gate tasks block the workflow until the user runs the corresponding command. **When `grant-commit` and `commit` are in exceptions (non-git project), do NOT seed those two tasks** — the workflow ends after `/archive`. Use these canonical templates:
|
|
34
|
+
|
|
35
|
+
**For `chore` track** (single phase + commit gate):
|
|
36
|
+
- `Run /chore for <slug>` — activeForm: "Running chore", metadata: `{"phase": "chore"}`
|
|
37
|
+
- `Wait for /grant-commit` — metadata: `{"phase": "grant-commit", "needs_user": true}`, addBlockedBy previous
|
|
38
|
+
- `Run /commit for <slug>` — activeForm: "Running commit", metadata: `{"phase": "commit"}`, addBlockedBy previous
|
|
39
|
+
|
|
40
|
+
**For `tdd`-entry quickfix track** (skip intake/scout/research/spec/review):
|
|
41
|
+
- `Run /tdd`, `Run /simplify`, `Run /security` (only if not in exceptions), `Run /integrate`, `Run /document`, `Run /archive`, `Wait for /grant-commit` (`needs_user`), `Run /commit` — each with `addBlockedBy` set to the previous task's id.
|
|
42
|
+
|
|
43
|
+
**For `spec`-entry track** (skip upstream): start from `Run /spec`, then `Wait for /approve-spec <path>` (`needs_user`), then continue per the full track.
|
|
44
|
+
|
|
45
|
+
**For `intake`-entry full track**: `Run /intake`, `Run /brd` (only if stakeholder-heavy), `Run /scout`, `Run /research`, `Run /spec`, `Wait for /approve-spec <path>` (`needs_user`), `Run /tdd` OR (`Run /swarm-plan`, `Wait for /approve-swarm <slug>` (`needs_user`), `Run /swarm-dispatch`), `Run /simplify`, `Run /security` (unless excepted), `Run /integrate`, `Run /document`, `Run /archive`, `Wait for /grant-commit` (`needs_user`), `Run /commit`. **On non-git projects the swarm branch SHALL NOT be seeded** — only `Run /tdd` goes in the list, regardless of expected component count. Swarm-vs-solo is a Phase-6 main-context decision (per CLAUDE.md Article V) only on git projects; non-git workflows resolve to solo at triage time because `swarm-plan`, `approve-swarm`, and `swarm-dispatch` are already in `exceptions`.
|
|
46
|
+
|
|
47
|
+
For every task: `subject` is imperative ("Run /scout for <slug>" / "Wait for /approve-spec <path>"); `description` names the phase + the slug; `metadata.phase` carries the phase name; consent-gate tasks set `metadata.needs_user: true`. Wire `addBlockedBy` so each task blocks until its predecessor completes — this surfaces the workflow's true dependency graph and prevents `/harness` from racing past a gate.
|
|
48
|
+
|
|
49
|
+
6. Tell the user the next concrete step to run: e.g. `/intake`, `/spec`, `/tdd`, `/chore`, or `/harness` to autopilot.
|
|
50
|
+
|
|
51
|
+
# Constraints
|
|
52
|
+
|
|
53
|
+
- NEVER skip triage by guessing from filename or diff alone. The user's natural-language framing is the primary signal.
|
|
54
|
+
- The Track Guard reads `entry_phase` and `exceptions`. If the user wants to skip an optional phase (e.g. `security`), add it to `exceptions` — do not silently re-order `workflow.phases` in project.json.
|
|
55
|
+
- If a workflow.json already exists for an open request, ask whether to replace it (starts a fresh track) or add to `completed` (continuing the same track).
|