safeword 0.2.3 → 0.2.4

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.
Files changed (235) hide show
  1. package/.claude/commands/arch-review.md +32 -0
  2. package/.claude/commands/lint.md +6 -0
  3. package/.claude/commands/quality-review.md +13 -0
  4. package/.claude/commands/setup-linting.md +6 -0
  5. package/.claude/hooks/auto-lint.sh +6 -0
  6. package/.claude/hooks/auto-quality-review.sh +170 -0
  7. package/.claude/hooks/check-linting-sync.sh +17 -0
  8. package/.claude/hooks/inject-timestamp.sh +6 -0
  9. package/.claude/hooks/question-protocol.sh +12 -0
  10. package/.claude/hooks/run-linters.sh +8 -0
  11. package/.claude/hooks/run-quality-review.sh +76 -0
  12. package/.claude/hooks/version-check.sh +10 -0
  13. package/.claude/mcp/README.md +96 -0
  14. package/.claude/mcp/arcade.sample.json +9 -0
  15. package/.claude/mcp/context7.sample.json +7 -0
  16. package/.claude/mcp/playwright.sample.json +7 -0
  17. package/.claude/settings.json +62 -0
  18. package/.claude/skills/quality-reviewer/SKILL.md +190 -0
  19. package/.claude/skills/safeword-quality-reviewer/SKILL.md +13 -0
  20. package/.env.arcade.example +4 -0
  21. package/.env.example +11 -0
  22. package/.gitmodules +4 -0
  23. package/.safeword/SAFEWORD.md +33 -0
  24. package/.safeword/eslint/eslint-base.mjs +101 -0
  25. package/.safeword/guides/architecture-guide.md +404 -0
  26. package/.safeword/guides/code-philosophy.md +174 -0
  27. package/.safeword/guides/context-files-guide.md +405 -0
  28. package/.safeword/guides/data-architecture-guide.md +183 -0
  29. package/.safeword/guides/design-doc-guide.md +165 -0
  30. package/.safeword/guides/learning-extraction.md +515 -0
  31. package/.safeword/guides/llm-instruction-design.md +239 -0
  32. package/.safeword/guides/llm-prompting.md +95 -0
  33. package/.safeword/guides/tdd-best-practices.md +570 -0
  34. package/.safeword/guides/test-definitions-guide.md +243 -0
  35. package/.safeword/guides/testing-methodology.md +573 -0
  36. package/.safeword/guides/user-story-guide.md +237 -0
  37. package/.safeword/guides/zombie-process-cleanup.md +214 -0
  38. package/{templates → .safeword}/hooks/agents-md-check.sh +0 -0
  39. package/{templates → .safeword}/hooks/post-tool.sh +0 -0
  40. package/{templates → .safeword}/hooks/pre-commit.sh +0 -0
  41. package/.safeword/planning/002-user-story-quality-evaluation.md +1840 -0
  42. package/.safeword/planning/003-langsmith-eval-setup-prompt.md +363 -0
  43. package/.safeword/planning/004-llm-eval-test-cases.md +3226 -0
  44. package/.safeword/planning/005-architecture-enforcement-system.md +169 -0
  45. package/.safeword/planning/006-reactive-fix-prevention-research.md +135 -0
  46. package/.safeword/planning/011-cli-ux-vision.md +330 -0
  47. package/.safeword/planning/012-project-structure-cleanup.md +154 -0
  48. package/.safeword/planning/README.md +39 -0
  49. package/.safeword/planning/automation-plan-v2.md +1225 -0
  50. package/.safeword/planning/automation-plan-v3.md +1291 -0
  51. package/.safeword/planning/automation-plan.md +3058 -0
  52. package/.safeword/planning/design/005-cli-implementation.md +343 -0
  53. package/.safeword/planning/design/013-cli-self-contained-templates.md +596 -0
  54. package/.safeword/planning/design/013a-eslint-plugin-suite.md +256 -0
  55. package/.safeword/planning/design/013b-implementation-snippets.md +385 -0
  56. package/.safeword/planning/design/013c-config-isolation-strategy.md +242 -0
  57. package/.safeword/planning/design/code-philosophy-improvements.md +60 -0
  58. package/.safeword/planning/mcp-analysis.md +545 -0
  59. package/.safeword/planning/phase2-subagents-vs-skills-analysis.md +451 -0
  60. package/.safeword/planning/settings-improvements.md +970 -0
  61. package/.safeword/planning/test-definitions/005-cli-implementation.md +1301 -0
  62. package/.safeword/planning/test-definitions/cli-self-contained-templates.md +205 -0
  63. package/.safeword/planning/user-stories/001-guides-review-user-stories.md +1381 -0
  64. package/.safeword/planning/user-stories/003-reactive-fix-prevention.md +132 -0
  65. package/.safeword/planning/user-stories/004-technical-constraints.md +86 -0
  66. package/.safeword/planning/user-stories/005-cli-implementation.md +311 -0
  67. package/.safeword/planning/user-stories/cli-self-contained-templates.md +172 -0
  68. package/.safeword/planning/versioned-distribution.md +740 -0
  69. package/.safeword/prompts/arch-review.md +43 -0
  70. package/.safeword/prompts/quality-review.md +11 -0
  71. package/.safeword/scripts/arch-review.sh +235 -0
  72. package/.safeword/scripts/check-linting-sync.sh +58 -0
  73. package/.safeword/scripts/setup-linting.sh +559 -0
  74. package/.safeword/templates/architecture-template.md +136 -0
  75. package/.safeword/templates/ci/architecture-check.yml +79 -0
  76. package/.safeword/templates/design-doc-template.md +127 -0
  77. package/.safeword/templates/test-definitions-feature.md +100 -0
  78. package/.safeword/templates/ticket-template.md +74 -0
  79. package/.safeword/templates/user-stories-template.md +82 -0
  80. package/.safeword/tickets/001-guides-review-user-stories.md +83 -0
  81. package/.safeword/tickets/002-architecture-enforcement.md +211 -0
  82. package/.safeword/tickets/003-reactive-fix-prevention.md +57 -0
  83. package/.safeword/tickets/004-technical-constraints-in-user-stories.md +39 -0
  84. package/.safeword/tickets/005-cli-implementation.md +248 -0
  85. package/.safeword/tickets/006-flesh-out-skills.md +43 -0
  86. package/.safeword/tickets/007-flesh-out-questioning.md +44 -0
  87. package/.safeword/tickets/008-upgrade-questioning.md +58 -0
  88. package/.safeword/tickets/009-naming-conventions.md +41 -0
  89. package/.safeword/tickets/010-safeword-md-cleanup.md +34 -0
  90. package/.safeword/tickets/011-cursor-setup.md +86 -0
  91. package/.safeword/tickets/README.md +73 -0
  92. package/.safeword/version +1 -0
  93. package/AGENTS.md +59 -0
  94. package/CLAUDE.md +12 -0
  95. package/README.md +347 -0
  96. package/docs/001-cli-implementation-plan.md +856 -0
  97. package/docs/elite-dx-implementation-plan.md +1034 -0
  98. package/framework/README.md +131 -0
  99. package/framework/mcp/README.md +96 -0
  100. package/framework/mcp/arcade.sample.json +8 -0
  101. package/framework/mcp/context7.sample.json +6 -0
  102. package/framework/mcp/playwright.sample.json +6 -0
  103. package/framework/scripts/arch-review.sh +235 -0
  104. package/framework/scripts/check-linting-sync.sh +58 -0
  105. package/framework/scripts/load-env.sh +49 -0
  106. package/framework/scripts/setup-claude.sh +223 -0
  107. package/framework/scripts/setup-linting.sh +559 -0
  108. package/framework/scripts/setup-quality.sh +477 -0
  109. package/framework/scripts/setup-safeword.sh +550 -0
  110. package/framework/templates/ci/architecture-check.yml +78 -0
  111. package/learnings/ai-sdk-v5-breaking-changes.md +178 -0
  112. package/learnings/e2e-test-zombie-processes.md +231 -0
  113. package/learnings/milkdown-crepe-editor-property.md +96 -0
  114. package/learnings/prosemirror-fragment-traversal.md +119 -0
  115. package/package.json +19 -43
  116. package/packages/cli/AGENTS.md +1 -0
  117. package/packages/cli/ARCHITECTURE.md +279 -0
  118. package/packages/cli/package.json +51 -0
  119. package/packages/cli/src/cli.ts +63 -0
  120. package/packages/cli/src/commands/check.ts +166 -0
  121. package/packages/cli/src/commands/diff.ts +209 -0
  122. package/packages/cli/src/commands/reset.ts +190 -0
  123. package/packages/cli/src/commands/setup.ts +325 -0
  124. package/packages/cli/src/commands/upgrade.ts +163 -0
  125. package/packages/cli/src/index.ts +3 -0
  126. package/packages/cli/src/templates/config.ts +58 -0
  127. package/packages/cli/src/templates/content.ts +18 -0
  128. package/packages/cli/src/templates/index.ts +12 -0
  129. package/packages/cli/src/utils/agents-md.ts +66 -0
  130. package/packages/cli/src/utils/fs.ts +179 -0
  131. package/packages/cli/src/utils/git.ts +124 -0
  132. package/packages/cli/src/utils/hooks.ts +29 -0
  133. package/packages/cli/src/utils/output.ts +60 -0
  134. package/packages/cli/src/utils/project-detector.test.ts +185 -0
  135. package/packages/cli/src/utils/project-detector.ts +44 -0
  136. package/packages/cli/src/utils/version.ts +28 -0
  137. package/packages/cli/src/version.ts +6 -0
  138. package/packages/cli/templates/SAFEWORD.md +776 -0
  139. package/packages/cli/templates/doc-templates/architecture-template.md +136 -0
  140. package/packages/cli/templates/doc-templates/design-doc-template.md +134 -0
  141. package/packages/cli/templates/doc-templates/test-definitions-feature.md +131 -0
  142. package/packages/cli/templates/doc-templates/ticket-template.md +82 -0
  143. package/packages/cli/templates/doc-templates/user-stories-template.md +92 -0
  144. package/packages/cli/templates/guides/architecture-guide.md +423 -0
  145. package/packages/cli/templates/guides/code-philosophy.md +195 -0
  146. package/packages/cli/templates/guides/context-files-guide.md +457 -0
  147. package/packages/cli/templates/guides/data-architecture-guide.md +200 -0
  148. package/packages/cli/templates/guides/design-doc-guide.md +171 -0
  149. package/packages/cli/templates/guides/learning-extraction.md +552 -0
  150. package/packages/cli/templates/guides/llm-instruction-design.md +248 -0
  151. package/packages/cli/templates/guides/llm-prompting.md +102 -0
  152. package/packages/cli/templates/guides/tdd-best-practices.md +615 -0
  153. package/packages/cli/templates/guides/test-definitions-guide.md +334 -0
  154. package/packages/cli/templates/guides/testing-methodology.md +618 -0
  155. package/packages/cli/templates/guides/user-story-guide.md +256 -0
  156. package/packages/cli/templates/guides/zombie-process-cleanup.md +219 -0
  157. package/packages/cli/templates/hooks/agents-md-check.sh +27 -0
  158. package/packages/cli/templates/hooks/post-tool.sh +4 -0
  159. package/packages/cli/templates/hooks/pre-commit.sh +10 -0
  160. package/packages/cli/templates/prompts/arch-review.md +43 -0
  161. package/packages/cli/templates/prompts/quality-review.md +10 -0
  162. package/packages/cli/templates/skills/safeword-quality-reviewer/SKILL.md +207 -0
  163. package/packages/cli/tests/commands/check.test.ts +129 -0
  164. package/packages/cli/tests/commands/cli.test.ts +89 -0
  165. package/packages/cli/tests/commands/diff.test.ts +115 -0
  166. package/packages/cli/tests/commands/reset.test.ts +310 -0
  167. package/packages/cli/tests/commands/self-healing.test.ts +170 -0
  168. package/packages/cli/tests/commands/setup-blocking.test.ts +71 -0
  169. package/packages/cli/tests/commands/setup-core.test.ts +135 -0
  170. package/packages/cli/tests/commands/setup-git.test.ts +139 -0
  171. package/packages/cli/tests/commands/setup-hooks.test.ts +334 -0
  172. package/packages/cli/tests/commands/setup-linting.test.ts +189 -0
  173. package/packages/cli/tests/commands/setup-noninteractive.test.ts +80 -0
  174. package/packages/cli/tests/commands/setup-templates.test.ts +181 -0
  175. package/packages/cli/tests/commands/upgrade.test.ts +215 -0
  176. package/packages/cli/tests/helpers.ts +243 -0
  177. package/packages/cli/tests/npm-package.test.ts +83 -0
  178. package/packages/cli/tests/technical-constraints.test.ts +96 -0
  179. package/packages/cli/tsconfig.json +25 -0
  180. package/packages/cli/tsup.config.ts +11 -0
  181. package/packages/cli/vitest.config.ts +23 -0
  182. package/promptfoo.yaml +3270 -0
  183. package/dist/check-3NGQ4NR5.js +0 -129
  184. package/dist/check-3NGQ4NR5.js.map +0 -1
  185. package/dist/chunk-2XWIUEQK.js +0 -190
  186. package/dist/chunk-2XWIUEQK.js.map +0 -1
  187. package/dist/chunk-GZRQL3SX.js +0 -146
  188. package/dist/chunk-GZRQL3SX.js.map +0 -1
  189. package/dist/chunk-ORQHKDT2.js +0 -10
  190. package/dist/chunk-ORQHKDT2.js.map +0 -1
  191. package/dist/chunk-W66Z3C5H.js +0 -21
  192. package/dist/chunk-W66Z3C5H.js.map +0 -1
  193. package/dist/cli.d.ts +0 -1
  194. package/dist/cli.js +0 -34
  195. package/dist/cli.js.map +0 -1
  196. package/dist/diff-Y6QTAW4O.js +0 -166
  197. package/dist/diff-Y6QTAW4O.js.map +0 -1
  198. package/dist/index.d.ts +0 -11
  199. package/dist/index.js +0 -7
  200. package/dist/index.js.map +0 -1
  201. package/dist/reset-3ACTIYYE.js +0 -143
  202. package/dist/reset-3ACTIYYE.js.map +0 -1
  203. package/dist/setup-RR4M334C.js +0 -266
  204. package/dist/setup-RR4M334C.js.map +0 -1
  205. package/dist/upgrade-6AR3DHUV.js +0 -134
  206. package/dist/upgrade-6AR3DHUV.js.map +0 -1
  207. /package/{templates → framework}/SAFEWORD.md +0 -0
  208. /package/{templates → framework}/guides/architecture-guide.md +0 -0
  209. /package/{templates → framework}/guides/code-philosophy.md +0 -0
  210. /package/{templates → framework}/guides/context-files-guide.md +0 -0
  211. /package/{templates → framework}/guides/data-architecture-guide.md +0 -0
  212. /package/{templates → framework}/guides/design-doc-guide.md +0 -0
  213. /package/{templates → framework}/guides/learning-extraction.md +0 -0
  214. /package/{templates → framework}/guides/llm-instruction-design.md +0 -0
  215. /package/{templates → framework}/guides/llm-prompting.md +0 -0
  216. /package/{templates → framework}/guides/tdd-best-practices.md +0 -0
  217. /package/{templates → framework}/guides/test-definitions-guide.md +0 -0
  218. /package/{templates → framework}/guides/testing-methodology.md +0 -0
  219. /package/{templates → framework}/guides/user-story-guide.md +0 -0
  220. /package/{templates → framework}/guides/zombie-process-cleanup.md +0 -0
  221. /package/{templates → framework}/prompts/arch-review.md +0 -0
  222. /package/{templates → framework}/prompts/quality-review.md +0 -0
  223. /package/{templates/skills/safeword-quality-reviewer → framework/skills/quality-reviewer}/SKILL.md +0 -0
  224. /package/{templates/doc-templates → framework/templates}/architecture-template.md +0 -0
  225. /package/{templates/doc-templates → framework/templates}/design-doc-template.md +0 -0
  226. /package/{templates/doc-templates → framework/templates}/test-definitions-feature.md +0 -0
  227. /package/{templates/doc-templates → framework/templates}/ticket-template.md +0 -0
  228. /package/{templates/doc-templates → framework/templates}/user-stories-template.md +0 -0
  229. /package/{templates → packages/cli/templates}/commands/arch-review.md +0 -0
  230. /package/{templates → packages/cli/templates}/commands/lint.md +0 -0
  231. /package/{templates → packages/cli/templates}/commands/quality-review.md +0 -0
  232. /package/{templates → packages/cli/templates}/hooks/inject-timestamp.sh +0 -0
  233. /package/{templates → packages/cli/templates}/lib/common.sh +0 -0
  234. /package/{templates → packages/cli/templates}/lib/jq-fallback.sh +0 -0
  235. /package/{templates → packages/cli/templates}/markdownlint.jsonc +0 -0
@@ -0,0 +1,79 @@
1
+ # Architecture Check CI Workflow
2
+ #
3
+ # Runs on pull requests to enforce architectural boundaries.
4
+ #
5
+ # Steps:
6
+ # 1. Type check (tsc --noEmit)
7
+ # 2. ESLint (includes eslint-plugin-boundaries)
8
+ # 3. LLM architecture review (optional, non-blocking)
9
+ #
10
+ # Usage:
11
+ # 1. Copy to .github/workflows/architecture-check.yml
12
+ # 2. Set ANTHROPIC_API_KEY secret (optional, for LLM review)
13
+ # 3. Adjust paths and triggers as needed
14
+
15
+ name: Architecture Check
16
+
17
+ on:
18
+ pull_request:
19
+ branches: [main, develop]
20
+ paths:
21
+ - 'src/**'
22
+ - 'package.json'
23
+ - 'tsconfig.json'
24
+ - 'eslint.config.mjs'
25
+
26
+ jobs:
27
+ architecture-check:
28
+ runs-on: ubuntu-latest
29
+
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+
34
+ - name: Setup Node.js
35
+ uses: actions/setup-node@v4
36
+ with:
37
+ node-version: '20'
38
+ cache: 'npm'
39
+
40
+ - name: Install dependencies
41
+ run: npm ci
42
+
43
+ # Step 1: Type check
44
+ - name: TypeScript Check
45
+ run: npx tsc --noEmit
46
+ continue-on-error: false
47
+
48
+ # Step 2: ESLint (includes boundary rules)
49
+ - name: ESLint
50
+ run: npm run lint
51
+ continue-on-error: false
52
+
53
+ # Step 3: LLM Architecture Review (optional)
54
+ # Only runs if ANTHROPIC_API_KEY is set
55
+ # Non-blocking by default (continue-on-error: true)
56
+ - name: Architecture Review (LLM)
57
+ if: ${{ secrets.ANTHROPIC_API_KEY != '' }}
58
+ env:
59
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
60
+ run: |
61
+ # Get changed files in this PR
62
+ CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -E '\.(js|ts|tsx|jsx)$' || true)
63
+
64
+ if [ -n "$CHANGED_FILES" ]; then
65
+ echo "Reviewing changed files:"
66
+ echo "$CHANGED_FILES"
67
+ echo ""
68
+
69
+ # Run architecture review if script exists
70
+ if [ -f ".safeword/scripts/arch-review.sh" ]; then
71
+ echo "$CHANGED_FILES" | xargs bash .safeword/scripts/arch-review.sh || true
72
+ else
73
+ echo "arch-review.sh not found, skipping LLM review"
74
+ fi
75
+ else
76
+ echo "No JS/TS files changed"
77
+ fi
78
+ continue-on-error: true # Non-blocking (advisory only)
79
+
@@ -0,0 +1,127 @@
1
+ # Design: [Feature Name]
2
+
3
+ **Guide**: `@./.safeword/guides/design-doc-guide.md` - Principles, structure guidelines, and avoiding bloat
4
+ **Template**: `@./.safeword/templates/design-doc-template.md`
5
+
6
+ **Related**: User Stories: `[path]` | Test Definitions: `[path]`
7
+
8
+ **TDD Note**: This design implements tests from Test Definitions. Reference specific test scenarios (e.g., "Test 3.1: Component X enables keyboard shortcut Y").
9
+
10
+ ## Architecture
11
+
12
+ [1-2 paragraphs: High-level approach. What are we building and how does it fit together?]
13
+
14
+ **Diagram** (if applicable):
15
+ [Text diagram or link to visual]
16
+
17
+ ## Components
18
+
19
+ ### Component [N]: [ComponentName]
20
+
21
+ **What**: [Responsibility in 1 sentence]
22
+ **Where** (if applicable): `[file/path/component.ts]`
23
+ **Interface**:
24
+ ```typescript
25
+ // Key types/interfaces
26
+ interface Example {
27
+ id: string;
28
+ // ...
29
+ }
30
+
31
+ // Key methods
32
+ function doSomething(input: Example): Result;
33
+ ```
34
+
35
+ **Dependencies**: [What it uses]
36
+ **Tests**: [Which test scenarios this component enables]
37
+
38
+ ### Component [N+1]: [AnotherComponentName]
39
+
40
+ **What**: [Different responsibility than Component N]
41
+ **Where** (if applicable): `[different/file/path.ts]`
42
+ **Interface**:
43
+ ```typescript
44
+ // Different example
45
+ interface AnotherExample {
46
+ value: string;
47
+ }
48
+
49
+ function anotherMethod(input: AnotherExample): Output;
50
+ ```
51
+
52
+ **Dependencies**: [Different dependencies]
53
+ **Tests**: [Different test scenarios this enables]
54
+
55
+ ## Data Model (if applicable)
56
+
57
+ [Describe state shape, database schema, or data structures. Include relationships between types and how data flows through the system.]
58
+
59
+ ```typescript
60
+ // Core data structures
61
+ interface FeatureState {
62
+ items: Item[];
63
+ selectedId: string | null;
64
+ }
65
+
66
+ interface Item {
67
+ id: string;
68
+ name: string;
69
+ // ...
70
+ }
71
+ ```
72
+
73
+ ## Component Interaction (if applicable)
74
+
75
+ [How components communicate and data flows between them]
76
+
77
+ **Flow:**
78
+ Component [N] → Component [N+1]
79
+
80
+ **Events/Calls:**
81
+ - Component [N] triggers [event/method] in Component [N+1]
82
+ - Component [N+1] updates [state/data] consumed by [other components/system]
83
+
84
+ ## User Flow
85
+
86
+ 1. User [action, e.g., clicks "Toggle AI Pane" button, presses Cmd+J]
87
+ 2. System [response, e.g., updates state, triggers re-render, calls API]
88
+ 3. User sees [outcome, e.g., AI pane appears/disappears, loading spinner, error message]
89
+
90
+ ## Key Decisions
91
+
92
+ ### Decision [N]: [Technical choice]
93
+
94
+ **What**: [What we're using/doing]
95
+ **Why**: [Rationale with specifics - include metrics, benchmarks, or analysis]
96
+ **Trade-off**: [What we're giving up]
97
+
98
+ ### Decision [N+1]: [Technical choice]
99
+
100
+ **What**: [Different choice than Decision N]
101
+ **Why**: [Rationale with specifics - include metrics, benchmarks, or analysis]
102
+ **Trade-off**: [Different trade-off]
103
+
104
+ ## Implementation Notes (if applicable)
105
+
106
+ **Constraints**:
107
+ - [Technical limitation, e.g., "Must support Safari 14+", "No Node.js dependencies"]
108
+ - [Performance requirement, e.g., "< 200ms response time", "Bundle size < 100KB"]
109
+
110
+ **Error Handling**:
111
+ - [How errors are caught and handled]
112
+ - [User-facing vs internal errors]
113
+ - [Retry/fallback strategies]
114
+
115
+ **Gotchas**:
116
+ - [Edge case or common mistake]
117
+ - [Thing to watch out for]
118
+
119
+ **Open Questions**:
120
+ - [ ] [Blocking question]
121
+ - [ ] [Needs research]
122
+
123
+ ## References (if applicable)
124
+
125
+ - [ADR-XXX: Related decision]
126
+ - [External docs or examples]
127
+ - [Proof of concept]
@@ -0,0 +1,100 @@
1
+ # Test Definitions: [Feature Name] (Issue #[number])
2
+
3
+ **Guide**: `@./.safeword/guides/test-definitions-guide.md` - Structure, status tracking, and TDD workflow
4
+ **Template**: `@./.safeword/templates/test-definitions-feature.md`
5
+
6
+ **Feature**: [Brief description of the feature]
7
+
8
+ **Related Issue**: #[number]
9
+ **Test File**: `[path/to/test.spec.ts]`
10
+ **Total Tests**: [N] ([X] passing, [Y] skipped, [Z] not implemented)
11
+
12
+ ---
13
+
14
+ ## Test Suite [N]: [Suite Name]
15
+
16
+ [Brief description of what this test suite covers]
17
+
18
+ ### Test [N.1]: [Test name] [✅/⏭️/❌]
19
+ **Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
20
+ **Description**: [What this test verifies]
21
+
22
+ **Steps**:
23
+ 1. [Action 1]
24
+ 2. [Action 2]
25
+ 3. [Action 3]
26
+
27
+ **Expected**:
28
+ - [Expected outcome 1]
29
+ - [Expected outcome 2]
30
+ - [Expected outcome 3]
31
+
32
+ ---
33
+
34
+ ### Test [N.2]: [Test name] [✅/⏭️/❌]
35
+ **Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
36
+ **Description**: [What this test verifies]
37
+
38
+ **Steps**:
39
+ 1. [Action 1]
40
+ 2. [Action 2]
41
+
42
+ **Expected**:
43
+ - [Expected outcome 1]
44
+ - [Expected outcome 2]
45
+
46
+ ---
47
+
48
+ ## Test Suite [N+1]: [Suite Name]
49
+
50
+ [Brief description of what this test suite covers]
51
+
52
+ ### Test [N+1.1]: [Test name] [✅/⏭️/❌]
53
+ **Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
54
+ **Description**: [What this test verifies]
55
+
56
+ **Steps**:
57
+ 1. [Action 1]
58
+ 2. [Action 2]
59
+
60
+ **Expected**:
61
+ - [Expected outcome 1]
62
+
63
+ ---
64
+
65
+ ## Summary
66
+
67
+ **Total**: [N] tests
68
+ **Passing**: [X] tests ([X]%)
69
+ **Skipped**: [Y] tests ([Y]%)
70
+ **Not Implemented**: [Z] tests ([Z]%)
71
+ **Failing**: [F] tests ([F]%)
72
+
73
+ ### Coverage by Feature
74
+
75
+ | Feature | Tests | Status |
76
+ |---------|-------|--------|
77
+ | [Feature 1] | [X]/[N] | [✅/❌] [X]% |
78
+ | [Feature 2] | [X]/[N] | [✅/❌] [X]% |
79
+ | [Feature 3] | [X]/[N] | [✅/❌] [X]% |
80
+
81
+ ### Skipped Tests Rationale
82
+
83
+ 1. **Test [N.X]** ([Test name]): [Reason for skipping - e.g., conflicts with design decision, requires manual testing, etc.]
84
+ 2. **Test [N.Y]** ([Test name]): [Reason for skipping]
85
+
86
+ ---
87
+
88
+ ## Test Execution
89
+
90
+ ```bash
91
+ # Run all tests for this feature
92
+ [command to run all tests]
93
+
94
+ # Run specific test
95
+ [command to run specific test with --grep flag]
96
+ ```
97
+
98
+ ---
99
+
100
+ **Last Updated**: [YYYY-MM-DD]
@@ -0,0 +1,74 @@
1
+ ---
2
+ id: XXX
3
+ status: in_progress
4
+ created: YYYY-MM-DDTHH:MM:SSZ
5
+ last_modified: YYYY-MM-DDTHH:MM:SSZ
6
+ ---
7
+
8
+ # Title
9
+
10
+ **Goal:** {One sentence: what are we trying to achieve?}
11
+
12
+ **Why:** {One sentence: why does this matter?}
13
+
14
+ ## Work Log
15
+
16
+ **Purpose:** Track what you've tried so you don't repeat dead ends or lose context.
17
+
18
+ **CRITICAL: Re-read this ticket before each significant action to stay on track.**
19
+
20
+ **Log immediately after:**
21
+ - Starting work
22
+ - Completing a step
23
+ - Trying an approach (document result: success or failure)
24
+ - Discovering a blocker, tradeoff, or decision point
25
+ - Writing a test (RED) or making it pass (GREEN)
26
+ - Committing code
27
+
28
+ **Format:** `YYYY-MM-DDTHH:MM:SSZ Action: Description (refs: commit/file/PR)`
29
+
30
+ **Examples:**
31
+ ```
32
+ - 2025-11-24T18:50:00Z Started: Changing button background to red
33
+ - 2025-11-24T18:51:30Z Tried: Added `background: red` to Button.css
34
+ - 2025-11-24T18:52:00Z Found: Button now has white text on red (unreadable)
35
+ - 2025-11-24T18:53:00Z Tried: Changed text color to white
36
+ - 2025-11-24T18:54:15Z Found: Hover state still blue (conflicts)
37
+ - 2025-11-24T18:55:00Z Complete: Updated all button states to red theme (refs: commit 9a3f2c1)
38
+ ```
39
+
40
+ ---
41
+
42
+ {Keep work log in reverse-chronological order. Newest entries at top.}
43
+ {Re-read before each action. Check what you've tried. Stay aligned with Goal.}
44
+
45
+ ---
46
+
47
+ ## Optional Sections (Add When Needed)
48
+
49
+ ### Planning Docs
50
+ {Only for complex features that need user stories, test definitions, design docs}
51
+
52
+ - .safeword/planning/user-stories/XXX-feature-name.md
53
+ - .safeword/planning/test-definitions/XXX-feature-name.md
54
+ - .safeword/planning/design/XXX-feature-name.md
55
+
56
+ ### Scope
57
+ {Only for complex features with unclear boundaries}
58
+
59
+ **In scope:**
60
+ -
61
+
62
+ **Out of scope:**
63
+ -
64
+
65
+ ### Acceptance Criteria
66
+ {Only for features or complex bugs where "done" isn't obvious}
67
+
68
+ - [ ]
69
+ - [ ]
70
+
71
+ ### Root Cause
72
+ {Only for bugs that required investigation}
73
+
74
+ {What caused this issue? Document for future reference.}
@@ -0,0 +1,82 @@
1
+ # User Stories: [Feature Name] (Issue #[number])
2
+
3
+ **Guide**: `@./.safeword/guides/user-story-guide.md` - Best practices, INVEST criteria, and examples
4
+ **Template**: `@./.safeword/templates/user-stories-template.md`
5
+
6
+ **Feature**: [Brief description of the feature]
7
+
8
+ **Related Issue**: #[number]
9
+ **Status**: [🚧 In Progress / ✅ Complete / ❌ Not Started] ([X/Y] stories complete)
10
+
11
+ ---
12
+
13
+ ## Technical Constraints
14
+
15
+ _Non-functional requirements that inform test definitions. Delete sections that don't apply._
16
+
17
+ ### Performance
18
+ - [ ] [e.g., Response time < 200ms at P95]
19
+
20
+ ### Security
21
+ - [ ] [e.g., All inputs validated/sanitized]
22
+
23
+ ### Compatibility
24
+ - [ ] [e.g., Chrome 100+, Safari 16+]
25
+
26
+ ### Data
27
+ - [ ] [e.g., GDPR: user data deletable within 72h]
28
+
29
+ ### Dependencies
30
+ - [ ] [e.g., Must use existing AuthService]
31
+
32
+ ### Infrastructure
33
+ - [ ] [e.g., Memory usage < 512MB]
34
+
35
+ ---
36
+
37
+ ## Story [N]: [Story Title]
38
+
39
+ **As a** [role]
40
+ **I want to** [capability]
41
+ **So that** [value]
42
+
43
+ **Acceptance Criteria**:
44
+ - [✅/❌] [criterion 1]
45
+ - [✅/❌] [criterion 2]
46
+ - [✅/❌] [criterion 3]
47
+
48
+ **Implementation Status**: [✅ Complete / 🚧 In Progress / ❌ Not Started]
49
+ **Tests**: [test file path and line numbers]
50
+
51
+ **Notes**: [Optional: design decisions, scope clarifications, or open questions]
52
+
53
+ ---
54
+
55
+ ## Story [N+1]: [Story Title]
56
+
57
+ **As a** [role]
58
+ **I want to** [capability]
59
+ **So that** [value]
60
+
61
+ **Acceptance Criteria**:
62
+ - [✅/❌] [criterion 1]
63
+ - [✅/❌] [criterion 2]
64
+
65
+ **Implementation Status**: [✅ Complete / 🚧 In Progress / ❌ Not Started]
66
+ **Tests**: [test file path]
67
+
68
+ ---
69
+
70
+ ## Summary
71
+
72
+ **Completed**: [N]/[M] stories ([X]%)
73
+ **Remaining**: [N]/[M] stories ([X]%)
74
+
75
+ ### [Phase Name]: [Description] [✅/❌]
76
+ - Story N: [Description]
77
+ - Story N+1: [Description]
78
+
79
+ ### [Phase Name]: [Description] [✅/❌]
80
+ - Story N+2: [Description]
81
+
82
+ **Next Steps**: [What needs to be done next to complete the feature]
@@ -0,0 +1,83 @@
1
+ ---
2
+ id: 001
3
+ status: in_progress
4
+ created: 2025-11-25T00:00:00Z
5
+ priority: medium
6
+ planning_refs:
7
+ - .safeword/planning/user-stories/001-guides-review-user-stories.md
8
+ ---
9
+
10
+ # Guides Review and User Story Extraction
11
+
12
+ ## Description
13
+
14
+ Review every guide under `framework/guides/` and extract actionable user stories for each distinct concept. Centralize all extracted stories in the linked planning doc for follow-up refinement and prioritization.
15
+
16
+ ## Scope
17
+
18
+ - Files in scope:
19
+ - `framework/guides/architecture-guide.md`
20
+ - `framework/guides/code-philosophy.md`
21
+ - `framework/guides/context-files-guide.md`
22
+ - `framework/guides/data-architecture-guide.md`
23
+ - `framework/guides/design-doc-guide.md`
24
+ - `framework/guides/learning-extraction.md`
25
+ - `framework/guides/llm-instruction-design.md`
26
+ - `framework/guides/llm-prompting.md`
27
+ - `framework/guides/tdd-templates.md`
28
+ - `framework/guides/test-definitions-guide.md`
29
+ - `framework/guides/testing-methodology.md`
30
+ - `framework/guides/user-story-guide.md`
31
+ - `framework/guides/zombie-process-cleanup.md`
32
+
33
+ ## Checklist (per-guide)
34
+
35
+ - [x] architecture-guide.md reviewed, stories extracted
36
+ - [x] code-philosophy.md reviewed, stories extracted
37
+ - [x] context-files-guide.md reviewed, stories extracted
38
+ - [x] data-architecture-guide.md reviewed, stories extracted
39
+ - [x] design-doc-guide.md reviewed, stories extracted
40
+ - [x] learning-extraction.md reviewed, stories extracted
41
+ - [x] llm-instruction-design.md reviewed, stories extracted
42
+ - [x] llm-prompting.md reviewed, stories extracted
43
+ - [x] tdd-templates.md reviewed, stories extracted
44
+ - [x] test-definitions-guide.md reviewed, stories extracted
45
+ - [x] testing-methodology.md reviewed, stories extracted
46
+ - [x] user-story-guide.md reviewed, stories extracted
47
+ - [x] zombie-process-cleanup.md reviewed, stories extracted
48
+
49
+ ## Acceptance Criteria
50
+
51
+ - [ ] All guides reviewed and checklist completed
52
+ - [ ] Extracted user stories recorded in `.safeword/planning/user-stories/001-guides-review-user-stories.md`
53
+ - [ ] Duplicates consolidated; names and phrasing consistent
54
+ - [ ] Summary section added to this ticket linking to key story groups
55
+
56
+ ## Summary of Extracted Story Groups
57
+
58
+ All extracted user stories are consolidated in:
59
+
60
+ - `.safeword/planning/user-stories/001-guides-review-user-stories.md`
61
+
62
+ Covered guides and sections:
63
+
64
+ - Architecture & Design Documentation Guide
65
+ - Code Philosophy & Practices
66
+ - Project Context Files (AGENTS/CLAUDE/CURSOR)
67
+ - Data Architecture Documentation Guide
68
+ - Design Doc Guide
69
+ - Learning Extraction Process
70
+ - LLM Instruction Design
71
+ - LLM Prompting Best Practices
72
+ - TDD Templates & Best Practices
73
+ - Test Definitions Guide
74
+ - Testing Methodology
75
+ - User Story Guide
76
+ - Zombie Process Cleanup
77
+
78
+ ## Work Log
79
+
80
+ - Created ticket and linked planning doc.
81
+ - Extracted stories from code-philosophy.md and architecture-guide.md; updated planning doc and checklist.
82
+ - Extracted stories from learning-extraction.md, context-files-guide.md, data-architecture-guide.md, design-doc-guide.md; updated planning doc and checklist.
83
+ - Completed extraction for llm-instruction-design.md, llm-prompting.md, tdd-templates.md, test-definitions-guide.md, testing-methodology.md, user-story-guide.md, zombie-process-cleanup.md.