safeword 0.2.4 → 0.2.6

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/dist/check-3NGQ4NR5.js +129 -0
  2. package/dist/check-3NGQ4NR5.js.map +1 -0
  3. package/dist/chunk-2XWIUEQK.js +190 -0
  4. package/dist/chunk-2XWIUEQK.js.map +1 -0
  5. package/dist/chunk-GZRQL3SX.js +146 -0
  6. package/dist/chunk-GZRQL3SX.js.map +1 -0
  7. package/dist/chunk-ORQHKDT2.js +10 -0
  8. package/dist/chunk-ORQHKDT2.js.map +1 -0
  9. package/dist/chunk-W66Z3C5H.js +21 -0
  10. package/dist/chunk-W66Z3C5H.js.map +1 -0
  11. package/dist/cli.d.ts +1 -0
  12. package/dist/cli.js +34 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/diff-Y6QTAW4O.js +166 -0
  15. package/dist/diff-Y6QTAW4O.js.map +1 -0
  16. package/dist/index.d.ts +11 -0
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/reset-3ACTIYYE.js +143 -0
  20. package/dist/reset-3ACTIYYE.js.map +1 -0
  21. package/dist/setup-AIL5RL45.js +276 -0
  22. package/dist/setup-AIL5RL45.js.map +1 -0
  23. package/dist/upgrade-6AR3DHUV.js +134 -0
  24. package/dist/upgrade-6AR3DHUV.js.map +1 -0
  25. package/package.json +44 -19
  26. package/{.safeword → templates}/hooks/agents-md-check.sh +0 -0
  27. package/{.safeword → templates}/hooks/post-tool.sh +0 -0
  28. package/{.safeword → templates}/hooks/pre-commit.sh +0 -0
  29. package/.claude/commands/arch-review.md +0 -32
  30. package/.claude/commands/lint.md +0 -6
  31. package/.claude/commands/quality-review.md +0 -13
  32. package/.claude/commands/setup-linting.md +0 -6
  33. package/.claude/hooks/auto-lint.sh +0 -6
  34. package/.claude/hooks/auto-quality-review.sh +0 -170
  35. package/.claude/hooks/check-linting-sync.sh +0 -17
  36. package/.claude/hooks/inject-timestamp.sh +0 -6
  37. package/.claude/hooks/question-protocol.sh +0 -12
  38. package/.claude/hooks/run-linters.sh +0 -8
  39. package/.claude/hooks/run-quality-review.sh +0 -76
  40. package/.claude/hooks/version-check.sh +0 -10
  41. package/.claude/mcp/README.md +0 -96
  42. package/.claude/mcp/arcade.sample.json +0 -9
  43. package/.claude/mcp/context7.sample.json +0 -7
  44. package/.claude/mcp/playwright.sample.json +0 -7
  45. package/.claude/settings.json +0 -62
  46. package/.claude/skills/quality-reviewer/SKILL.md +0 -190
  47. package/.claude/skills/safeword-quality-reviewer/SKILL.md +0 -13
  48. package/.env.arcade.example +0 -4
  49. package/.env.example +0 -11
  50. package/.gitmodules +0 -4
  51. package/.safeword/SAFEWORD.md +0 -33
  52. package/.safeword/eslint/eslint-base.mjs +0 -101
  53. package/.safeword/guides/architecture-guide.md +0 -404
  54. package/.safeword/guides/code-philosophy.md +0 -174
  55. package/.safeword/guides/context-files-guide.md +0 -405
  56. package/.safeword/guides/data-architecture-guide.md +0 -183
  57. package/.safeword/guides/design-doc-guide.md +0 -165
  58. package/.safeword/guides/learning-extraction.md +0 -515
  59. package/.safeword/guides/llm-instruction-design.md +0 -239
  60. package/.safeword/guides/llm-prompting.md +0 -95
  61. package/.safeword/guides/tdd-best-practices.md +0 -570
  62. package/.safeword/guides/test-definitions-guide.md +0 -243
  63. package/.safeword/guides/testing-methodology.md +0 -573
  64. package/.safeword/guides/user-story-guide.md +0 -237
  65. package/.safeword/guides/zombie-process-cleanup.md +0 -214
  66. package/.safeword/planning/002-user-story-quality-evaluation.md +0 -1840
  67. package/.safeword/planning/003-langsmith-eval-setup-prompt.md +0 -363
  68. package/.safeword/planning/004-llm-eval-test-cases.md +0 -3226
  69. package/.safeword/planning/005-architecture-enforcement-system.md +0 -169
  70. package/.safeword/planning/006-reactive-fix-prevention-research.md +0 -135
  71. package/.safeword/planning/011-cli-ux-vision.md +0 -330
  72. package/.safeword/planning/012-project-structure-cleanup.md +0 -154
  73. package/.safeword/planning/README.md +0 -39
  74. package/.safeword/planning/automation-plan-v2.md +0 -1225
  75. package/.safeword/planning/automation-plan-v3.md +0 -1291
  76. package/.safeword/planning/automation-plan.md +0 -3058
  77. package/.safeword/planning/design/005-cli-implementation.md +0 -343
  78. package/.safeword/planning/design/013-cli-self-contained-templates.md +0 -596
  79. package/.safeword/planning/design/013a-eslint-plugin-suite.md +0 -256
  80. package/.safeword/planning/design/013b-implementation-snippets.md +0 -385
  81. package/.safeword/planning/design/013c-config-isolation-strategy.md +0 -242
  82. package/.safeword/planning/design/code-philosophy-improvements.md +0 -60
  83. package/.safeword/planning/mcp-analysis.md +0 -545
  84. package/.safeword/planning/phase2-subagents-vs-skills-analysis.md +0 -451
  85. package/.safeword/planning/settings-improvements.md +0 -970
  86. package/.safeword/planning/test-definitions/005-cli-implementation.md +0 -1301
  87. package/.safeword/planning/test-definitions/cli-self-contained-templates.md +0 -205
  88. package/.safeword/planning/user-stories/001-guides-review-user-stories.md +0 -1381
  89. package/.safeword/planning/user-stories/003-reactive-fix-prevention.md +0 -132
  90. package/.safeword/planning/user-stories/004-technical-constraints.md +0 -86
  91. package/.safeword/planning/user-stories/005-cli-implementation.md +0 -311
  92. package/.safeword/planning/user-stories/cli-self-contained-templates.md +0 -172
  93. package/.safeword/planning/versioned-distribution.md +0 -740
  94. package/.safeword/prompts/arch-review.md +0 -43
  95. package/.safeword/prompts/quality-review.md +0 -11
  96. package/.safeword/scripts/arch-review.sh +0 -235
  97. package/.safeword/scripts/check-linting-sync.sh +0 -58
  98. package/.safeword/scripts/setup-linting.sh +0 -559
  99. package/.safeword/templates/architecture-template.md +0 -136
  100. package/.safeword/templates/ci/architecture-check.yml +0 -79
  101. package/.safeword/templates/design-doc-template.md +0 -127
  102. package/.safeword/templates/test-definitions-feature.md +0 -100
  103. package/.safeword/templates/ticket-template.md +0 -74
  104. package/.safeword/templates/user-stories-template.md +0 -82
  105. package/.safeword/tickets/001-guides-review-user-stories.md +0 -83
  106. package/.safeword/tickets/002-architecture-enforcement.md +0 -211
  107. package/.safeword/tickets/003-reactive-fix-prevention.md +0 -57
  108. package/.safeword/tickets/004-technical-constraints-in-user-stories.md +0 -39
  109. package/.safeword/tickets/005-cli-implementation.md +0 -248
  110. package/.safeword/tickets/006-flesh-out-skills.md +0 -43
  111. package/.safeword/tickets/007-flesh-out-questioning.md +0 -44
  112. package/.safeword/tickets/008-upgrade-questioning.md +0 -58
  113. package/.safeword/tickets/009-naming-conventions.md +0 -41
  114. package/.safeword/tickets/010-safeword-md-cleanup.md +0 -34
  115. package/.safeword/tickets/011-cursor-setup.md +0 -86
  116. package/.safeword/tickets/README.md +0 -73
  117. package/.safeword/version +0 -1
  118. package/AGENTS.md +0 -59
  119. package/CLAUDE.md +0 -12
  120. package/README.md +0 -347
  121. package/docs/001-cli-implementation-plan.md +0 -856
  122. package/docs/elite-dx-implementation-plan.md +0 -1034
  123. package/framework/README.md +0 -131
  124. package/framework/mcp/README.md +0 -96
  125. package/framework/mcp/arcade.sample.json +0 -8
  126. package/framework/mcp/context7.sample.json +0 -6
  127. package/framework/mcp/playwright.sample.json +0 -6
  128. package/framework/scripts/arch-review.sh +0 -235
  129. package/framework/scripts/check-linting-sync.sh +0 -58
  130. package/framework/scripts/load-env.sh +0 -49
  131. package/framework/scripts/setup-claude.sh +0 -223
  132. package/framework/scripts/setup-linting.sh +0 -559
  133. package/framework/scripts/setup-quality.sh +0 -477
  134. package/framework/scripts/setup-safeword.sh +0 -550
  135. package/framework/templates/ci/architecture-check.yml +0 -78
  136. package/learnings/ai-sdk-v5-breaking-changes.md +0 -178
  137. package/learnings/e2e-test-zombie-processes.md +0 -231
  138. package/learnings/milkdown-crepe-editor-property.md +0 -96
  139. package/learnings/prosemirror-fragment-traversal.md +0 -119
  140. package/packages/cli/AGENTS.md +0 -1
  141. package/packages/cli/ARCHITECTURE.md +0 -279
  142. package/packages/cli/package.json +0 -51
  143. package/packages/cli/src/cli.ts +0 -63
  144. package/packages/cli/src/commands/check.ts +0 -166
  145. package/packages/cli/src/commands/diff.ts +0 -209
  146. package/packages/cli/src/commands/reset.ts +0 -190
  147. package/packages/cli/src/commands/setup.ts +0 -325
  148. package/packages/cli/src/commands/upgrade.ts +0 -163
  149. package/packages/cli/src/index.ts +0 -3
  150. package/packages/cli/src/templates/config.ts +0 -58
  151. package/packages/cli/src/templates/content.ts +0 -18
  152. package/packages/cli/src/templates/index.ts +0 -12
  153. package/packages/cli/src/utils/agents-md.ts +0 -66
  154. package/packages/cli/src/utils/fs.ts +0 -179
  155. package/packages/cli/src/utils/git.ts +0 -124
  156. package/packages/cli/src/utils/hooks.ts +0 -29
  157. package/packages/cli/src/utils/output.ts +0 -60
  158. package/packages/cli/src/utils/project-detector.test.ts +0 -185
  159. package/packages/cli/src/utils/project-detector.ts +0 -44
  160. package/packages/cli/src/utils/version.ts +0 -28
  161. package/packages/cli/src/version.ts +0 -6
  162. package/packages/cli/templates/SAFEWORD.md +0 -776
  163. package/packages/cli/templates/doc-templates/architecture-template.md +0 -136
  164. package/packages/cli/templates/doc-templates/design-doc-template.md +0 -134
  165. package/packages/cli/templates/doc-templates/test-definitions-feature.md +0 -131
  166. package/packages/cli/templates/doc-templates/ticket-template.md +0 -82
  167. package/packages/cli/templates/doc-templates/user-stories-template.md +0 -92
  168. package/packages/cli/templates/guides/architecture-guide.md +0 -423
  169. package/packages/cli/templates/guides/code-philosophy.md +0 -195
  170. package/packages/cli/templates/guides/context-files-guide.md +0 -457
  171. package/packages/cli/templates/guides/data-architecture-guide.md +0 -200
  172. package/packages/cli/templates/guides/design-doc-guide.md +0 -171
  173. package/packages/cli/templates/guides/learning-extraction.md +0 -552
  174. package/packages/cli/templates/guides/llm-instruction-design.md +0 -248
  175. package/packages/cli/templates/guides/llm-prompting.md +0 -102
  176. package/packages/cli/templates/guides/tdd-best-practices.md +0 -615
  177. package/packages/cli/templates/guides/test-definitions-guide.md +0 -334
  178. package/packages/cli/templates/guides/testing-methodology.md +0 -618
  179. package/packages/cli/templates/guides/user-story-guide.md +0 -256
  180. package/packages/cli/templates/guides/zombie-process-cleanup.md +0 -219
  181. package/packages/cli/templates/hooks/agents-md-check.sh +0 -27
  182. package/packages/cli/templates/hooks/post-tool.sh +0 -4
  183. package/packages/cli/templates/hooks/pre-commit.sh +0 -10
  184. package/packages/cli/templates/prompts/arch-review.md +0 -43
  185. package/packages/cli/templates/prompts/quality-review.md +0 -10
  186. package/packages/cli/templates/skills/safeword-quality-reviewer/SKILL.md +0 -207
  187. package/packages/cli/tests/commands/check.test.ts +0 -129
  188. package/packages/cli/tests/commands/cli.test.ts +0 -89
  189. package/packages/cli/tests/commands/diff.test.ts +0 -115
  190. package/packages/cli/tests/commands/reset.test.ts +0 -310
  191. package/packages/cli/tests/commands/self-healing.test.ts +0 -170
  192. package/packages/cli/tests/commands/setup-blocking.test.ts +0 -71
  193. package/packages/cli/tests/commands/setup-core.test.ts +0 -135
  194. package/packages/cli/tests/commands/setup-git.test.ts +0 -139
  195. package/packages/cli/tests/commands/setup-hooks.test.ts +0 -334
  196. package/packages/cli/tests/commands/setup-linting.test.ts +0 -189
  197. package/packages/cli/tests/commands/setup-noninteractive.test.ts +0 -80
  198. package/packages/cli/tests/commands/setup-templates.test.ts +0 -181
  199. package/packages/cli/tests/commands/upgrade.test.ts +0 -215
  200. package/packages/cli/tests/helpers.ts +0 -243
  201. package/packages/cli/tests/npm-package.test.ts +0 -83
  202. package/packages/cli/tests/technical-constraints.test.ts +0 -96
  203. package/packages/cli/tsconfig.json +0 -25
  204. package/packages/cli/tsup.config.ts +0 -11
  205. package/packages/cli/vitest.config.ts +0 -23
  206. package/promptfoo.yaml +0 -3270
  207. /package/{framework → templates}/SAFEWORD.md +0 -0
  208. /package/{packages/cli/templates → templates}/commands/arch-review.md +0 -0
  209. /package/{packages/cli/templates → templates}/commands/lint.md +0 -0
  210. /package/{packages/cli/templates → templates}/commands/quality-review.md +0 -0
  211. /package/{framework/templates → templates/doc-templates}/architecture-template.md +0 -0
  212. /package/{framework/templates → templates/doc-templates}/design-doc-template.md +0 -0
  213. /package/{framework/templates → templates/doc-templates}/test-definitions-feature.md +0 -0
  214. /package/{framework/templates → templates/doc-templates}/ticket-template.md +0 -0
  215. /package/{framework/templates → templates/doc-templates}/user-stories-template.md +0 -0
  216. /package/{framework → templates}/guides/architecture-guide.md +0 -0
  217. /package/{framework → templates}/guides/code-philosophy.md +0 -0
  218. /package/{framework → templates}/guides/context-files-guide.md +0 -0
  219. /package/{framework → templates}/guides/data-architecture-guide.md +0 -0
  220. /package/{framework → templates}/guides/design-doc-guide.md +0 -0
  221. /package/{framework → templates}/guides/learning-extraction.md +0 -0
  222. /package/{framework → templates}/guides/llm-instruction-design.md +0 -0
  223. /package/{framework → templates}/guides/llm-prompting.md +0 -0
  224. /package/{framework → templates}/guides/tdd-best-practices.md +0 -0
  225. /package/{framework → templates}/guides/test-definitions-guide.md +0 -0
  226. /package/{framework → templates}/guides/testing-methodology.md +0 -0
  227. /package/{framework → templates}/guides/user-story-guide.md +0 -0
  228. /package/{framework → templates}/guides/zombie-process-cleanup.md +0 -0
  229. /package/{packages/cli/templates → templates}/hooks/inject-timestamp.sh +0 -0
  230. /package/{packages/cli/templates → templates}/lib/common.sh +0 -0
  231. /package/{packages/cli/templates → templates}/lib/jq-fallback.sh +0 -0
  232. /package/{packages/cli/templates → templates}/markdownlint.jsonc +0 -0
  233. /package/{framework → templates}/prompts/arch-review.md +0 -0
  234. /package/{framework → templates}/prompts/quality-review.md +0 -0
  235. /package/{framework/skills/quality-reviewer → templates/skills/safeword-quality-reviewer}/SKILL.md +0 -0
@@ -1,211 +0,0 @@
1
- ---
2
- id: 002
3
- status: in_progress
4
- ---
5
-
6
- # Architecture Enforcement for SAFEWORD
7
-
8
- **Goal:** Add layers/boundaries enforcement to SAFEWORD so AI agents respect architectural boundaries.
9
-
10
- **Why:** Without guardrails, AI agents create circular dependencies, god modules, and unsafe refactoring patterns.
11
-
12
- ## Work Log
13
-
14
- - 2025-11-27T00:00:00Z Started: Created plan at `.safeword/planning/005-architecture-enforcement-system.md`
15
- - 2025-11-27T00:00:00Z Decision: Extend `setup-linting.sh` for eslint-plugin-boundaries (not new script)
16
- - 2025-11-27T00:00:00Z Decision: Add layers/boundaries section to existing `architecture-guide.md`
17
- - 2025-11-27T00:00:00Z Decision: Create `prompts/` folder, extract existing quality-review prompt from `setup-quality.sh`
18
- - 2025-11-27T00:00:00Z Decision: Drop Biome support entirely, ESLint-only with eslint-plugin-boundaries
19
- - 2025-11-27 Implementation completed:
20
- - Phase 1: Added Layers & Boundaries section to `architecture-guide.md`, created `templates/architecture-template.md`
21
- - Phase 2: Updated `setup-linting.sh` - removed Biome mode, added eslint-plugin-boundaries to all ESLint modes
22
- - Phase 3: Created `framework/prompts/` with quality-review.md and arch-review.md, created `scripts/arch-review.sh`, updated setup-safeword.sh and setup-quality.sh
23
- - Phase 4: Created `templates/ci/architecture-check.yml`
24
-
25
- ---
26
-
27
- ## Planning Docs
28
-
29
- - `.safeword/planning/005-architecture-enforcement-system.md` - Full plan with phases, deliverables, tool selection
30
-
31
- ## User Stories
32
-
33
- **Source:** Stories 1-11 from `001-guides-review-user-stories.md` (documentation guidance). Stories 12-19 added for enforcement/tooling.
34
-
35
- ---
36
-
37
- ### Story 12: Layer Definition Guidance ✅
38
-
39
- **As a** developer setting up a new project
40
- **I want** clear layer definitions (app, domain, infra, shared) with responsibilities
41
- **So that** I know how to organize code from the start
42
-
43
- **Acceptance Criteria:**
44
-
45
- - [x] Layer definitions table in `architecture-guide.md`
46
- - [x] Each layer has directory and responsibility defined
47
- - [x] `architecture-template.md` includes same structure
48
-
49
- ---
50
-
51
- ### Story 13: Dependency Rules ✅
52
-
53
- **As a** developer writing cross-layer code
54
- **I want** an allowed dependencies matrix showing what can import what
55
- **So that** I avoid circular dependencies and leaky abstractions
56
-
57
- **Acceptance Criteria:**
58
-
59
- - [x] Matrix shows from/to/allowed/rationale
60
- - [x] Forbidden imports marked with ❌
61
- - [x] Rationale explains why each rule exists
62
-
63
- ---
64
-
65
- ### Story 14: Edge Case Handling ✅
66
-
67
- **As a** developer with non-standard project structure
68
- **I want** documented edge cases (brownfield, monorepo, non-3-layer)
69
- **So that** I can adapt boundary rules to my situation
70
-
71
- **Acceptance Criteria:**
72
-
73
- - [x] Edge cases table in guide
74
- - [x] Solutions for each scenario
75
- - [x] Brownfield adoption path (warnings-only → incremental fix → enforce)
76
-
77
- ---
78
-
79
- ### Story 15: Static Boundary Enforcement ✅
80
-
81
- **As a** developer
82
- **I want** boundary violations caught by ESLint
83
- **So that** I see errors immediately in IDE and CI
84
-
85
- **Acceptance Criteria:**
86
-
87
- - [x] `eslint-plugin-boundaries` added by `setup-linting.sh`
88
- - [x] Setup instructions + common issues in `architecture-guide.md`
89
-
90
- ---
91
-
92
- ### Story 16: LLM Architecture Review ✅
93
-
94
- **As a** developer committing changes
95
- **I want** an LLM to review for architectural anti-patterns
96
- **So that** semantic issues are caught that static analysis misses
97
-
98
- **Acceptance Criteria:**
99
-
100
- - [x] `arch-review.sh` calls Haiku API
101
- - [x] Returns JSON verdict: `clean` | `minor` | `refactor_needed`
102
- - [x] Reviews against `ARCHITECTURE.md` if present
103
- - [x] Checks for: misplaced logic, god modules, leaky abstractions, tight coupling, boundary violations
104
-
105
- ---
106
-
107
- ### Story 17: Pre-commit Enforcement ✅
108
-
109
- **As a** developer
110
- **I want** boundary violations to block my commit
111
- **So that** architectural issues are caught before code review
112
-
113
- **Acceptance Criteria:**
114
-
115
- - [x] Pre-commit hook runs eslint + arch-review.sh
116
- - [x] Lint errors block commit
117
- - [x] `refactor_needed` verdict blocks commit
118
- - [x] `minor` verdict warns but allows commit
119
-
120
- ---
121
-
122
- ### Story 18: CI Architecture Check ✅
123
-
124
- **As a** team lead
125
- **I want** PRs checked for boundary violations in CI
126
- **So that** architectural issues can't slip through code review
127
-
128
- **Acceptance Criteria:**
129
-
130
- - [x] `architecture-check.yml` template provided
131
- - [x] Runs tsc, eslint (with boundaries), optional LLM review
132
- - [x] LLM review is non-blocking (advisory only)
133
-
134
- ---
135
-
136
- ### Story 19: Architecture Template ✅
137
-
138
- **As a** developer starting a new project
139
- **I want** a pre-filled `ARCHITECTURE.md` template
140
- **So that** I have the right structure without starting from scratch
141
-
142
- **Acceptance Criteria:**
143
-
144
- - [x] All required sections present (Overview, Layers, Data Model, Decisions, Best Practices, Migration)
145
- - [x] Layers & dependencies pre-filled (same rules as guide)
146
- - [x] Key Decisions format: What/Why/Trade-off/Alternatives
147
-
148
- ---
149
-
150
- ### Prior Stories (Documentation Guidance)
151
-
152
- From `001-guides-review-user-stories.md` → `### architecture-guide.md`:
153
-
154
- | # | Story | Summary | Status |
155
- | --- | ------------------------------------- | ---------------------------------------------- | ------ |
156
- | 1 | Single Comprehensive Architecture Doc | One `ARCHITECTURE.md` per project at root | ✅ |
157
- | 2 | Design Doc Simplicity | Design docs reference arch doc, no duplication | ✅ |
158
- | 3 | Decision Matrix | Tech/data → arch doc; feature → design doc | ✅ |
159
- | 4 | Code References | Key patterns linked to files with line ranges | ✅ |
160
- | 6 | TDD Workflow Integration | Architecture doc reviewed before coding | ✅ |
161
- | 8 | Triggers to Update Architecture Doc | New data models, tech choices trigger updates | ✅ |
162
- | 9 | Common Mistakes | No ADR sprawl; keep one comprehensive doc | ✅ |
163
- | 11 | Data Architecture Guidance | Linked guide for data-heavy projects | ✅ |
164
-
165
- ---
166
-
167
- ## Scope
168
-
169
- **In scope:**
170
-
171
- - Phase 1: Add layers/boundaries section to `architecture-guide.md` + create `templates/architecture-template.md`
172
- - Phase 2: Add `eslint-plugin-boundaries` to `setup-linting.sh` + remove `--biome` mode (breaking change)
173
- - Phase 3: Create `prompts/` folder + `arch-review.sh` script + git pre-commit hook
174
- - Phase 4: CI workflow template `templates/ci/architecture-check.yml`
175
-
176
- **Out of scope:**
177
-
178
- - Phase 5 (Drift detection) - Deferred
179
- - Python support - Future phase
180
- - Biome support (dropped - ESLint only)
181
-
182
- ## Acceptance Criteria
183
-
184
- - [x] `architecture-guide.md` has Layers & Boundaries section with:
185
- - [x] Layer definitions table
186
- - [x] Allowed dependencies matrix
187
- - [x] Edge cases (non-3-layer, brownfield, shared utilities)
188
- - [x] `templates/architecture-template.md` created with layers/boundaries section
189
- - [x] `setup-linting.sh` adds `eslint-plugin-boundaries` to all ESLint modes
190
- - [x] `setup-linting.sh` removes `--biome` mode (breaking change)
191
- - [x] `architecture-guide.md` includes boundary rule setup instructions
192
- - [x] `framework/prompts/` folder created (copied to `.safeword/prompts/` by setup)
193
- - [x] `prompts/quality-review.md` extracted from `setup-quality.sh`
194
- - [x] `prompts/arch-review.md` - semantic architecture review prompt
195
- - [x] `scripts/arch-review.sh` - calls Haiku API for arch review
196
- - [x] Git pre-commit hook runs `eslint` + `arch-review.sh` on staged files
197
- - [x] `setup-safeword.sh` updated to copy `prompts/` folder + install pre-commit hook
198
- - [x] `setup-quality.sh` updated to reference `.safeword/prompts/quality-review.md`
199
- - [x] `templates/ci/architecture-check.yml` GitHub Actions workflow
200
- - [ ] All tests pass
201
- - [ ] User confirms completion
202
-
203
- ## Implementation Notes
204
-
205
- **Key Design Decisions:**
206
-
207
- - ESLint-only (drop Biome support) - simpler, better IDE integration
208
- - Boundaries via `eslint-plugin-boundaries` - integrated with existing linting
209
- - Add to existing `architecture-guide.md` rather than new guide (single source of truth)
210
- - Prompts return structured JSON (per `llm-prompting.md` best practices)
211
- - Template allows direct app→infra (note hexagonal alternative)
@@ -1,57 +0,0 @@
1
- ---
2
- id: 003
3
- status: todo
4
- ---
5
-
6
- # Reactive Fix Prevention
7
-
8
- **Goal:** Stop agents from falling into "error-fix-error" loops by forcing architectural awareness and planning before changes.
9
-
10
- **Why:** Without guardrails, agents fix reactively—creating cascading problems, ignoring root causes, and violating architectural boundaries.
11
-
12
- ## Work Log
13
-
14
- **Purpose:** Track what you've tried so you don't repeat dead ends or lose context.
15
-
16
- **CRITICAL: Re-read this ticket before each significant action to stay on track.**
17
-
18
- ---
19
-
20
- - 2025-11-27T12:00:00Z Started: Created ticket based on AI research into reactive fix patterns
21
- - 2025-11-27T12:00:00Z Research: Reviewed MASAI, ProSEA, Factored Agents papers + DEV.to article
22
- - 2025-11-27T12:00:00Z Finding: Documentation alone insufficient—need active enforcement + planning phases
23
- - 2025-11-27T12:00:00Z Created: Research summary at `.safeword/planning/006-reactive-fix-prevention-research.md`
24
- - 2025-11-27T12:00:00Z Created: User stories at `.safeword/planning/user-stories/003-reactive-fix-prevention.md`
25
-
26
- ---
27
-
28
- ## Planning Docs
29
-
30
- - `.safeword/planning/user-stories/003-reactive-fix-prevention.md`
31
- - `.safeword/planning/006-reactive-fix-prevention-research.md`
32
-
33
- ## Scope
34
-
35
- **In scope:**
36
-
37
- - Add "Before ANY Error Fix" section to SAFEWORD.md
38
- - Add "Red Flags (Stop and Think)" section to SAFEWORD.md
39
- - Update systematic-debugging skill with architecture context loading
40
- - Add reactive fix prevention guidance to code-philosophy.md
41
- - Sync all changes to packages/cli/templates/
42
-
43
- **Out of scope:**
44
-
45
- - New tooling (covered by ticket 002)
46
- - CI integration (covered by ticket 002)
47
- - Automated change counting hooks (future enhancement)
48
-
49
- ## Acceptance Criteria
50
-
51
- - [ ] User stories complete and validated
52
- - [ ] "Before ANY Error Fix" section in SAFEWORD.md
53
- - [ ] "Red Flags (Stop and Think)" section in SAFEWORD.md
54
- - [ ] systematic-debugging skill updated with architecture context loading step
55
- - [ ] code-philosophy.md updated with reactive fix prevention
56
- - [ ] Changes synced to packages/cli/templates/
57
- - [ ] User confirms completion
@@ -1,39 +0,0 @@
1
- ---
2
- id: 004
3
- status: done
4
- created: 2025-11-27T14:00:00Z
5
- last_modified: 2025-11-27T14:30:00Z
6
- ---
7
-
8
- # Technical Constraints in User Stories
9
-
10
- **Goal:** Capture non-functional requirements (NFRs) in user stories before test definitions, so tests are informed by performance, security, and compatibility constraints.
11
-
12
- **Why:** Without explicit constraints, agents write tests that verify behavior but miss NFRs—resulting in code that "works" but fails in production (slow, insecure, incompatible).
13
-
14
- ## Work Log
15
-
16
- ---
17
-
18
- - 2025-11-27T14:30:00Z Complete: All files updated, ready for user confirmation
19
- - 2025-11-27T14:25:00Z Updated: SAFEWORD.md workflow step 1, creation trigger, edge cases
20
- - 2025-11-27T14:20:00Z Updated: tdd-best-practices.md with example including constraints
21
- - 2025-11-27T14:15:00Z Updated: user-story-guide.md with constraints guidance section
22
- - 2025-11-27T14:10:00Z Updated: user-stories-template.md with Technical Constraints section
23
- - 2025-11-27T14:05:00Z Decision: Option A (add to user stories) vs Option B (separate doc) - chose A for simplicity
24
- - 2025-11-27T14:00:00Z Started: User asked about capturing technical requirements before test definitions in TDD
25
-
26
- ---
27
-
28
- ### Planning Docs
29
-
30
- - .safeword/planning/user-stories/004-technical-constraints.md
31
-
32
- ### Acceptance Criteria
33
-
34
- - [x] User stories template includes Technical Constraints section
35
- - [x] User story guide explains how to fill out constraints
36
- - [x] TDD best practices includes example with constraints
37
- - [x] SAFEWORD.md workflow mentions constraints
38
- - [x] Sync framework/SAFEWORD.md to .safeword/SAFEWORD.md
39
- - [ ] User confirms completion
@@ -1,248 +0,0 @@
1
- ---
2
- id: 005
3
- status: pending
4
- created: 2025-11-27
5
- github: https://github.com/TheMostlyGreat/safeword/issues/1
6
- ---
7
-
8
- # Implement TypeScript CLI
9
-
10
- **Goal:** Ship TypeScript CLI (`safeword`) that replaces bash scripts with elite developer experience.
11
-
12
- **Why:** Bash scripts are hard to maintain, test, and extend. CLI improves DX for setup, verification, and team onboarding.
13
-
14
- ## Planning Docs
15
-
16
- - [CLI UX Vision](../planning/011-cli-ux-vision.md) — All decisions and architecture
17
-
18
- ## Key Decisions
19
-
20
- | Decision | Choice |
21
- | -------------------- | ---------------------------------------------- |
22
- | Package | `safeword` |
23
- | Commands | setup, check, upgrade, diff, reset |
24
- | Global flags | `--version`, `--help` |
25
- | Non-interactive | Auto-TTY + `--yes` |
26
- | Existing config | Error: "Run `safeword upgrade`" |
27
- | Same-version upgrade | Force reinstall |
28
- | Linting failure | Core failure, exit 1 |
29
- | No git | Prompt (auto-skip with `--yes`) |
30
- | AGENTS.md | Prepend link (LLM primacy) |
31
- | AGENTS.md check | SessionStart hook verifies, re-adds if missing |
32
- | package.json | Add lint/format scripts |
33
- | Reset confirm | Prompt (auto-confirm with `--yes`) |
34
- | Skill conflict | Overwrite silently |
35
- | Diff output | Summary + `--verbose` |
36
-
37
- ## Scope
38
-
39
- ### v1 Commands
40
-
41
- | Command | Purpose |
42
- | -------------------- | ---------------------------------- |
43
- | `safeword` | Show help |
44
- | `safeword --version` | Show CLI version |
45
- | `safeword setup` | Full setup (error if exists) |
46
- | `safeword check` | Health + versions |
47
- | `safeword upgrade` | Update project (always reinstalls) |
48
- | `safeword diff` | Preview changes |
49
- | `safeword reset` | Remove (prompts confirm) |
50
-
51
- ### Flags
52
-
53
- - `--version` — Show CLI version (global)
54
- - `--help` — Show help (global)
55
- - `--yes` — Accept defaults (skip prompts, auto-confirm)
56
- - `--verbose` — Detailed output (diff)
57
- - `--offline` — Skip version check (check)
58
-
59
- ### Setup Flow
60
-
61
- 1. Check existing → error if found
62
- 2. Detect project type
63
- 3. Copy templates to `.safeword/`
64
- 4. Register Claude Code hooks (incl. SessionStart for AGENTS.md check)
65
- 5. Copy skills to `.claude/skills/safeword-*/`
66
- 6. Install + configure linting (exit 1 if fails)
67
- 7. Add lint/format scripts to package.json
68
- 8. Handle git (prompt or auto-skip)
69
- 9. Prepend link to `AGENTS.md` (create if missing)
70
-
71
- ### Commands on Unconfigured
72
-
73
- | Command | Behavior |
74
- | --------- | ---------------------------- |
75
- | `check` | "Not configured" (exit 0) |
76
- | `diff` | Error (exit 1) |
77
- | `reset` | "Nothing to remove" (exit 0) |
78
- | `upgrade` | Error (exit 1) |
79
-
80
- ### Out of Scope (v1.x)
81
-
82
- - `safeword doctor`
83
- - Claude Code plugin wrapper
84
- - MCP server management
85
- - Per-package monorepo support
86
- - CLAUDE.md handling (only AGENTS.md)
87
-
88
- ## Acceptance Criteria
89
-
90
- - [ ] `npx safeword --version` shows version
91
- - [ ] `npx safeword setup` works (interactive)
92
- - [ ] `npx safeword setup --yes` works (non-interactive)
93
- - [ ] Auto-detects no-TTY and uses defaults
94
- - [ ] Setup errors if `.safeword/` exists
95
- - [ ] Prompts to init git if missing
96
- - [ ] Prepends link to `AGENTS.md`
97
- - [ ] SessionStart hook checks AGENTS.md, re-adds if missing
98
- - [ ] Full linting setup (exit 1 if fails)
99
- - [ ] Adds lint/format scripts to package.json
100
- - [ ] `npx safeword check` shows health + versions
101
- - [ ] `check` on unconfigured shows "Not configured"
102
- - [ ] Version check gracefully handles offline
103
- - [ ] `npx safeword upgrade` always reinstalls
104
- - [ ] `npx safeword diff` shows summary
105
- - [ ] `npx safeword diff --verbose` shows full diff
106
- - [ ] `diff` on unconfigured errors
107
- - [ ] `npx safeword reset` prompts for confirm
108
- - [ ] `npx safeword reset --yes` auto-confirms
109
- - [ ] `reset` on unconfigured says "Nothing to remove"
110
- - [ ] Reset removes line from `AGENTS.md`
111
- - [ ] Preserves existing Claude Code hooks
112
- - [ ] Preserves existing git pre-commit hooks
113
- - [ ] Refuses to downgrade project
114
- - [ ] Exit 0 with warnings for partial success
115
- - [ ] Exit 1 for core failures
116
- - [ ] Published to npm as `safeword`
117
- - [ ] README updated
118
- - [ ] Tested in 3+ real projects
119
-
120
- ## Technical Notes
121
-
122
- ### File Structure
123
-
124
- ```
125
- .safeword/
126
- SAFEWORD.md, version, README.md
127
- hooks/, skills/, guides/, scripts/, prompts/, templates/
128
-
129
- .claude/
130
- settings.json
131
- skills/safeword-*/
132
-
133
- .git/hooks/
134
- pre-commit (if git)
135
-
136
- AGENTS.md (link prepended at top)
137
- ```
138
-
139
- ### Non-Interactive Behavior
140
-
141
- - No TTY → auto-defaults
142
- - `--yes` → force defaults in terminal
143
- - Defaults: skip git init, auto-confirm reset
144
-
145
- ### Exit Codes
146
-
147
- - 0 = Success (warnings OK)
148
- - 1 = Core failure
149
-
150
- ### Hook Coexistence
151
-
152
- - Claude: Append/remove by path pattern
153
- - Git: Marker-based (`SAFEWORD_ARCH_CHECK_START/END`)
154
-
155
- ### AGENTS.md Handling
156
-
157
- - Setup: Prepend link (check for duplicates first)
158
- - SessionStart: Verify link exists, re-add with alert if missing
159
- - Reset: Search exact string, remove
160
- - Only AGENTS.md (not CLAUDE.md)
161
-
162
- ### package.json Scripts
163
-
164
- ```json
165
- {
166
- "scripts": {
167
- "lint": "eslint .",
168
- "format": "prettier --write ."
169
- }
170
- }
171
- ```
172
-
173
- **Note:** Reset leaves these intact (standard CLI behavior). User removes manually if wanted.
174
-
175
- ## Refactor Plan
176
-
177
- Minimal refactoring to improve code quality while keeping all 88 tests green.
178
-
179
- ### 1. Extract Version Utilities
180
-
181
- **Why:** `compareVersions` in `upgrade.ts` and `isNewerVersion` in `check.ts` duplicate semver comparison logic.
182
-
183
- **Changes:**
184
-
185
- - Create `src/utils/version.ts` with:
186
- - `compareVersions(a: string, b: string): -1 | 0 | 1`
187
- - `isNewerVersion(current: string, latest: string): boolean`
188
- - Update `upgrade.ts` to import `compareVersions`
189
- - Update `check.ts` to import `isNewerVersion`
190
- - Remove duplicate implementations
191
-
192
- **Files affected:**
193
-
194
- - `src/utils/version.ts` (new)
195
- - `src/commands/upgrade.ts` (remove local function)
196
- - `src/commands/check.ts` (remove local function)
197
-
198
- ### 2. Split Templates File
199
-
200
- **Why:** `src/templates/index.ts` at 180+ lines mixes content templates with configuration objects.
201
-
202
- **Changes:**
203
-
204
- - Create `src/templates/content.ts` for markdown/script content:
205
- - `SAFEWORD_MD`, `AGENTS_MD_LINK`, `PRETTIERRC`
206
- - `HOOK_AGENTS_CHECK`, `HOOK_PRE_COMMIT`, `HOOK_POST_TOOL`
207
- - `SKILL_QUALITY_REVIEWER`
208
- - Create `src/templates/config.ts` for configuration:
209
- - `getEslintConfig()`
210
- - `SETTINGS_HOOKS`
211
- - Update `src/templates/index.ts` to re-export all
212
-
213
- **Files affected:**
214
-
215
- - `src/templates/content.ts` (new)
216
- - `src/templates/config.ts` (new)
217
- - `src/templates/index.ts` (becomes re-export barrel)
218
-
219
- ### Verification
220
-
221
- After each refactor:
222
-
223
- 1. `npx tsup` - must build successfully
224
- 2. `npx vitest run` - all 88 tests must pass
225
-
226
- ### Out of Scope
227
-
228
- - Command structure changes (not worth the churn)
229
- - Type improvements for hook filtering (works fine)
230
- - Adding new abstractions (avoid over-engineering)
231
-
232
- ### Refactor Checklist
233
-
234
- - [ ] Extract version utilities
235
- - [ ] Verify tests pass
236
- - [ ] Split templates file
237
- - [ ] Verify tests pass
238
- - [ ] Final review
239
-
240
- ## Work Log
241
-
242
- - 2025-11-27 Created ticket
243
- - 2025-11-27 Added UX vision decisions
244
- - 2025-11-27 Final: TTY detection, `--yes` defaults, diff format, skill conflicts
245
- - 2025-11-27 Final: --version, setup errors if exists, linting=exit 1, upgrade reinstalls
246
- - 2025-11-27 Final: AGENTS.md prepend, SessionStart hook, package.json scripts, reset confirm, unconfigured behavior
247
- - 2025-11-28 GREEN phase complete: All 88 tests passing
248
- - 2025-11-28 Added refactor plan
@@ -1,43 +0,0 @@
1
- ---
2
- id: 006
3
- status: pending
4
- created: 2025-11-27
5
- github: https://github.com/TheMostlyGreat/safeword/issues/2
6
- ---
7
-
8
- # Flesh Out Framework Skills
9
-
10
- **Goal:** Expand `framework/skills/` with high-value skills from examples/superpowers.
11
-
12
- **Why:** Only `quality-reviewer` exists in framework. Superpowers has 20+ battle-tested skills ready to port.
13
-
14
- ## Scope
15
-
16
- **Priority skills to port:**
17
-
18
- | Skill | Value | Complexity |
19
- | -------------------------------- | ------------------------------ | ---------- |
20
- | `systematic-debugging` | Prevents fix-by-guessing loops | Medium |
21
- | `test-driven-development` | Core TDD workflow | Low |
22
- | `verification-before-completion` | Prevents incomplete work | Low |
23
- | `root-cause-tracing` | Debug methodology | Medium |
24
- | `writing-plans` | Planning discipline | Low |
25
- | `executing-plans` | Plan execution | Low |
26
- | `brainstorming` | Creative problem solving | Low |
27
-
28
- **Out of scope:**
29
-
30
- - Agent-specific skills (dispatching-parallel-agents, subagent-driven-development)
31
- - Git workflow skills (using-git-worktrees, finishing-a-development-branch)
32
- - Meta skills (writing-skills, sharing-skills)
33
-
34
- ## Acceptance Criteria
35
-
36
- - [ ] 5+ skills ported to framework/skills/
37
- - [ ] Each skill has SKILL.md with clear triggers and protocol
38
- - [ ] Skills work standalone (no superpowers dependency)
39
- - [ ] README updated with skills section
40
-
41
- ## Work Log
42
-
43
- - 2025-11-27 Created ticket
@@ -1,44 +0,0 @@
1
- ---
2
- id: 007
3
- status: pending
4
- created: 2025-11-27
5
- github: https://github.com/TheMostlyGreat/safeword/issues/3
6
- ---
7
-
8
- # Flesh Out Questioning System
9
-
10
- **Goal:** Improve the `ask_questions` functionality in quality review to be more strategic and useful.
11
-
12
- **Why:** Current questioning is binary (on/off). Needs guidance on _what_ questions to ask and _when_.
13
-
14
- ## Current State
15
-
16
- - `.auto-quality-review.config` has `ask_questions=true|false`
17
- - Quality review prompt says "Ask me any non-obvious questions..."
18
- - No guidance on question types, timing, or prioritization
19
-
20
- ## Scope
21
-
22
- **Improvements:**
23
-
24
- 1. **Question taxonomy** - Types of questions (clarification, confirmation, scope, edge cases)
25
- 2. **Question triggers** - When to ask vs assume
26
- 3. **Question format** - How to phrase actionable questions
27
- 4. **Question limits** - Max questions per review (avoid question fatigue)
28
-
29
- **Deliverables:**
30
-
31
- - Questioning guide in `framework/guides/questioning-guide.md`
32
- - Update quality-reviewer SKILL.md with questioning protocol
33
- - Update quality review prompts
34
-
35
- ## Acceptance Criteria
36
-
37
- - [ ] Guide defines question types with examples
38
- - [ ] Clear triggers for when to ask
39
- - [ ] Limit guidance (e.g., "max 2-3 questions per review")
40
- - [ ] Quality reviewer SKILL.md references new guide
41
-
42
- ## Work Log
43
-
44
- - 2025-11-27 Created ticket