safeword 0.2.2 → 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-M73LGONJ.js +0 -129
  184. package/dist/check-M73LGONJ.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-V5G6BGOK.js +0 -26
  190. package/dist/chunk-V5G6BGOK.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-FSFDCBL5.js +0 -166
  197. package/dist/diff-FSFDCBL5.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-MKVVQTVA.js +0 -266
  204. package/dist/setup-MKVVQTVA.js.map +0 -1
  205. package/dist/upgrade-FQOL6AF5.js +0 -134
  206. package/dist/upgrade-FQOL6AF5.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,154 @@
1
+ # Project Structure Cleanup Plan
2
+
3
+ **Date:** 2025-11-28
4
+ **Status:** Planning
5
+
6
+ ---
7
+
8
+ ## Problem Statement
9
+
10
+ The project has significant duplication and organizational confusion:
11
+ 1. `framework/` and `.safeword/` contain nearly identical content
12
+ 2. Multiple SAFEWORD.md files (root, framework/, .safeword/)
13
+ 3. Planning/tickets scattered across `.agents/`, `.safeword/`, `planning/`, `docs/`
14
+ 4. Duplicate `learnings/` directories
15
+ 5. Test artifacts in root directory
16
+
17
+ ---
18
+
19
+ ## Proposed Changes
20
+
21
+ ### 1. Clarify framework/ vs .safeword/ Purpose
22
+
23
+ **Decision:**
24
+ - `framework/` = Source templates bundled by CLI for distribution
25
+ - `.safeword/` = Generated instance (created by `npx safeword setup`)
26
+ - This repo is the safeword source, so `.safeword/` should NOT exist here (it's for target projects)
27
+
28
+ **Action:** Delete `.safeword/` directory entirely. The CLI reads from `packages/cli/templates/` or `framework/`.
29
+
30
+ ### 2. Remove Root SAFEWORD.md
31
+
32
+ **Current state:**
33
+ - `SAFEWORD.md` (root) - 542 bytes, stub
34
+ - `framework/SAFEWORD.md` - 31KB, full content
35
+
36
+ **Action:** Delete root `SAFEWORD.md`. Update `CLAUDE.md` to point to `framework/SAFEWORD.md`.
37
+
38
+ ### 3. Consolidate Planning Directories
39
+
40
+ **Current state:**
41
+ - `.safeword/planning/` - AI working docs (12 files)
42
+ - `.safeword/tickets/` - Tickets (11 files)
43
+ - `.safeword/planning/` - Planning docs
44
+ - `.safeword/tickets/` - Tickets
45
+ - `planning/` - Various planning docs (9 files)
46
+ - `docs/` - Implementation plans (2 files)
47
+
48
+ **Action:**
49
+ - Keep `.agents/` for AI working space (gitignored, ephemeral)
50
+ - Move `planning/` contents to `docs/planning/`
51
+ - Delete `.safeword/planning/` and `.safeword/tickets/` (duplicates)
52
+
53
+ ### 4. Consolidate learnings/
54
+
55
+ **Current state:**
56
+ - `learnings/` (root) - 4 files
57
+ - `.safeword/learnings/` - likely empty or duplicate
58
+
59
+ **Action:** Keep root `learnings/`, delete `.safeword/learnings/`.
60
+
61
+ ### 5. Organize Test/Eval Files
62
+
63
+ **Current state:**
64
+ - `promptfoo.yaml` (127KB) - test setup
65
+ - `eval-results.json` (958KB) - test artifact
66
+
67
+ **Action:**
68
+ - Create `evals/` directory
69
+ - Move `promptfoo.yaml` to `evals/promptfoo.yaml`
70
+ - Add `eval-results.json` to `.gitignore`
71
+ - Update `package.json` scripts to use new path
72
+
73
+ ---
74
+
75
+ ## Files Requiring Path Updates
76
+
77
+ ### Scripts to Check
78
+
79
+ 1. `.claude/hooks/auto-quality-review.sh` - references `.safeword/`?
80
+ 2. `.claude/hooks/run-quality-review.sh` - references prompts?
81
+ 3. `.safeword/scripts/arch-review.sh` - references `.safeword/prompts/`
82
+ 4. `framework/scripts/*.sh` - check all paths
83
+ 5. `packages/cli/src/**/*.ts` - check template paths
84
+
85
+ ### Markdown Files to Check
86
+
87
+ 1. `CLAUDE.md` - points to `.safeword/SAFEWORD.md`
88
+ 2. `AGENTS.md` - may reference `.safeword/`
89
+ 3. `README.md` - may reference paths
90
+ 4. `framework/README.md` - internal references
91
+ 5. `packages/cli/ARCHITECTURE.md` - references to planning docs
92
+
93
+ ---
94
+
95
+ ## New Structure (After Cleanup)
96
+
97
+ ```
98
+ safeword/
99
+ ├── packages/cli/ # CLI source code
100
+ │ ├── src/
101
+ │ ├── templates/ # Bundled templates
102
+ │ ├── tests/
103
+ │ └── ARCHITECTURE.md
104
+ ├── framework/ # Source templates & guides
105
+ │ ├── guides/
106
+ │ ├── prompts/
107
+ │ ├── templates/
108
+ │ ├── scripts/
109
+ │ ├── skills/
110
+ │ ├── mcp/
111
+ │ └── SAFEWORD.md
112
+ ├── docs/ # Project documentation
113
+ │ ├── planning/ # (moved from planning/)
114
+ │ └── *.md
115
+ ├── evals/ # LLM evaluation setup
116
+ │ └── promptfoo.yaml
117
+ ├── learnings/ # Extracted learnings
118
+ ├── .agents/ # AI working space (gitignored)
119
+ ├── .claude/ # Claude Code config (tracked)
120
+ │ ├── commands/
121
+ │ ├── hooks/
122
+ │ ├── skills/
123
+ │ └── settings.json
124
+ ├── CLAUDE.md # Points to framework/SAFEWORD.md
125
+ ├── AGENTS.md
126
+ ├── README.md
127
+ └── package.json
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Execution Order
133
+
134
+ 1. Update `.gitignore` first (add eval-results.json, .agents/)
135
+ 2. Delete `.safeword/` directory
136
+ 3. Delete root `SAFEWORD.md`
137
+ 4. Move `planning/` to `docs/planning/`
138
+ 5. Create `evals/` and move `promptfoo.yaml`
139
+ 6. Update `CLAUDE.md` path reference
140
+ 7. Update `package.json` eval scripts
141
+ 8. Verify all script paths
142
+ 9. Verify all markdown link paths
143
+ 10. Test CLI still works
144
+
145
+ ---
146
+
147
+ ## Rollback Plan
148
+
149
+ If issues arise:
150
+ ```bash
151
+ git checkout -- .
152
+ ```
153
+
154
+ All changes should be in a single commit for easy revert.
@@ -0,0 +1,39 @@
1
+ # Planning
2
+
3
+ ## Structure
4
+
5
+ - `user-stories/` - User stories for features (As a X / Given-When-Then)
6
+ - `user-stories/archive/` - Completed/obsolete user stories
7
+ - `test-definitions/` - Test scenarios and acceptance criteria
8
+ - `test-definitions/archive/` - Completed/obsolete test definitions
9
+ - `design/` - Design docs for complex features (>3 components, new data model, architectural decisions)
10
+ - `design/archive/` - Completed/obsolete design docs
11
+ - `issues/` - Issue tracking and requirements
12
+ - `issues/archive/` - Completed/obsolete issues
13
+
14
+ ## Naming Convention
15
+
16
+ **Planning docs share the same prefix as their ticket:**
17
+
18
+ Example for ticket `001-user-authentication.md`:
19
+ - `user-stories/001-user-authentication.md`
20
+ - `test-definitions/001-user-authentication.md`
21
+ - `design/001-user-authentication.md`
22
+
23
+ This makes it easy to find all related docs: `ls **/001-user-authentication.md`
24
+
25
+ ## Archiving
26
+
27
+ When planning docs are completed and no longer actively referenced:
28
+ - Move to corresponding `archive/` subfolder
29
+ - Preserves history while preventing bloat in active folders
30
+
31
+ ## Workflow
32
+
33
+ 1. **User stories** → Define what we're building
34
+ 2. **Test definitions** → Define how we'll verify it works
35
+ 3. **Design docs** (optional for complex features) → Plan implementation
36
+ 4. **Implementation (TDD)** → RED → GREEN → REFACTOR
37
+ 5. **Archive** → Move completed docs to archive/
38
+
39
+ See `@./.safeword/SAFEWORD.md` for full workflow.