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,58 @@
1
+ ---
2
+ id: 008
3
+ status: pending
4
+ created: 2025-11-27
5
+ github: https://github.com/TheMostlyGreat/safeword/issues/4
6
+ ---
7
+
8
+ # Upgrade Questioning - Requirements Gathering
9
+
10
+ **Goal:** Add proactive questioning for requirements gathering BEFORE implementation, not just during quality review.
11
+
12
+ **Why:** Current questioning only happens in quality review (after changes). Need questioning skill for upfront requirements clarification.
13
+
14
+ ## Problem
15
+
16
+ Agent often starts implementing without clarifying:
17
+
18
+ - Ambiguous requirements
19
+ - Missing acceptance criteria
20
+ - Undefined edge cases
21
+ - Technology preferences
22
+
23
+ **Result:** Rework, wrong direction, wasted cycles.
24
+
25
+ ## Scope
26
+
27
+ **New capability:** Requirements questioning skill
28
+
29
+ **Key scenarios:**
30
+
31
+ 1. **Feature request** - Clarify scope, acceptance criteria, constraints
32
+ 2. **Bug report** - Clarify repro steps, expected behavior, severity
33
+ 3. **Refactoring** - Clarify goals, constraints, risk tolerance
34
+ 4. **Design decision** - Clarify priorities, trade-offs, timeline
35
+
36
+ **Question protocol:**
37
+
38
+ - Ask upfront (before implementation)
39
+ - Limit to 2-3 key questions
40
+ - Provide defaults/assumptions if user doesn't answer
41
+ - Document answers in ticket/planning docs
42
+
43
+ ## Deliverables
44
+
45
+ - `framework/skills/requirements-questioning/SKILL.md`
46
+ - Integration with ticket system (questions → ticket answers)
47
+ - Update SAFEWORD.md workflow with questioning step
48
+
49
+ ## Acceptance Criteria
50
+
51
+ - [ ] Skill file with clear triggers and protocol
52
+ - [ ] Question templates for each scenario
53
+ - [ ] Integration with planning docs workflow
54
+ - [ ] Maximum question limits to avoid fatigue
55
+
56
+ ## Work Log
57
+
58
+ - 2025-11-27 Created ticket
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: 009
3
+ status: pending
4
+ created: 2025-11-27
5
+ github: https://github.com/TheMostlyGreat/safeword/issues/5
6
+ ---
7
+
8
+ # Fix File Naming Conventions
9
+
10
+ **Goal:** Standardize naming for tickets vs derived planning docs vs standalone docs.
11
+
12
+ **Why:** Current naming is inconsistent. Hard to see which planning docs belong to which tickets.
13
+
14
+ ## Naming Rules
15
+
16
+ | File Type | Pattern | Example |
17
+ | ------------------- | ----------------------- | ------------------------------------------------------ |
18
+ | **Tickets** | `{NNN}-{slug}.md` | `001-fix-login-bug.md` |
19
+ | **Derived docs** | `{NNN}.{XX}-{slug}.md` | `001.01-user-stories.md`, `001.02-test-definitions.md` |
20
+ | **Standalone docs** | `{slug}.md` (no number) | `architecture-enforcement-system.md` |
21
+
22
+ ## Rules
23
+
24
+ 1. **Tickets** stay numbered: `001-`, `002-`, etc.
25
+ 2. **Planning docs derived from a ticket** append `.XX` sub-number
26
+ - First planning doc: `001.01-user-stories.md`
27
+ - Second: `001.02-design-doc.md`
28
+ - Allows sorting while showing relationship
29
+ 3. **Standalone planning docs** (bigger scope than any ticket) get no number
30
+ - Cross-cutting concerns, research, multi-ticket planning
31
+ - Example: `architecture-enforcement-system.md`
32
+
33
+ ## Acceptance Criteria
34
+
35
+ - [ ] SAFEWORD.md updated with naming convention
36
+ - [ ] Existing files renamed to match
37
+ - [ ] Ticket template includes derived doc naming guidance
38
+
39
+ ## Work Log
40
+
41
+ - 2025-11-27 Created ticket
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: 010
3
+ status: pending
4
+ priority: high
5
+ created: 2025-11-27
6
+ github: https://github.com/TheMostlyGreat/safeword/issues/6
7
+ ---
8
+
9
+ # Clean Up SAFEWORD.md
10
+
11
+ **Goal:** Streamline and modernize SAFEWORD.md for clarity and maintainability.
12
+
13
+ **Why:** Core file that all AI agents read. Bloated/unclear instructions = confused agents = wasted cycles.
14
+
15
+ ## Scope
16
+
17
+ **Review and clean:**
18
+
19
+ - Remove duplication
20
+ - Tighten language (brevity, clarity)
21
+ - Update outdated sections
22
+ - Improve structure/hierarchy
23
+ - Ensure consistency with guides
24
+
25
+ ## Acceptance Criteria
26
+
27
+ - [ ] Reduced line count without losing value
28
+ - [ ] Clear section hierarchy
29
+ - [ ] No duplicated content with guides
30
+ - [ ] All cross-references valid
31
+
32
+ ## Work Log
33
+
34
+ - 2025-11-27 Created ticket (high priority)
@@ -0,0 +1,86 @@
1
+ ---
2
+ id: 011
3
+ status: pending
4
+ created: 2025-11-27
5
+ github: https://github.com/TheMostlyGreat/safeword/issues/7
6
+ ---
7
+
8
+ # Add Cursor Setup Support
9
+
10
+ **Goal:** Create `setup-cursor.sh` script that sets up Cursor IDE with SAFEWORD patterns, parallel to `setup-claude.sh`.
11
+
12
+ **Why:** Cursor is a popular AI-powered IDE. Teams using Cursor need the same SAFEWORD enforcement (TDD workflow, quality standards, guides) that Claude Code users get.
13
+
14
+ ## Scope
15
+
16
+ **In scope:**
17
+
18
+ - `setup-cursor.sh` - Sets up Cursor-specific configurations
19
+ - `.cursorrules` file with SAFEWORD trigger
20
+ - `.cursor/mcp.json` for MCP server configurations (Context7, etc.)
21
+ - `CURSOR.md` project context file (optional, when CLAUDE.md doesn't exist)
22
+ - Integration with existing `setup-safeword.sh` (detect and offer Cursor setup)
23
+
24
+ **Out of scope:**
25
+
26
+ - Cursor-specific hooks (Cursor doesn't support hooks like Claude Code)
27
+ - Linting setup (already handled by `setup-linting.sh`, works for any editor)
28
+ - CLI integration (`safeword init --cursor` - that's for the CLI ticket)
29
+
30
+ ## Technical Notes
31
+
32
+ Cursor uses these files:
33
+
34
+ - `.cursorrules` - Project-level rules (like `.claude/settings.json` but simpler)
35
+ - `.cursor/mcp.json` - MCP server configurations
36
+ - `.cursor/rules/` - Directory for multiple rule files (alternative to single `.cursorrules`)
37
+
38
+ Key differences from Claude setup:
39
+
40
+ - No hooks system (Cursor doesn't have pre/post command hooks)
41
+ - Rules are simpler - just instructions, no JSON config
42
+ - MCP config format differs from Claude's
43
+
44
+ ## Acceptance Criteria
45
+
46
+ - [ ] `bash setup-cursor.sh` creates `.cursorrules` with SAFEWORD trigger
47
+ - [ ] `.cursorrules` references `@./.safeword/SAFEWORD.md`
48
+ - [ ] Script creates `.cursor/mcp.json` with Context7 config
49
+ - [ ] Script is idempotent (safe to run multiple times)
50
+ - [ ] Script detects existing `.cursorrules` and appends (doesn't overwrite)
51
+ - [ ] `setup-safeword.sh` mentions Cursor setup as next step
52
+ - [ ] README updated with Cursor setup instructions
53
+
54
+ ## Implementation Notes
55
+
56
+ `.cursorrules` content should include:
57
+
58
+ ```markdown
59
+ # Project Rules
60
+
61
+ **⚠️ ALWAYS READ FIRST: @./.safeword/SAFEWORD.md**
62
+
63
+ The SAFEWORD.md file contains core development patterns, workflows, and conventions.
64
+ Read it BEFORE working on any task in this project.
65
+
66
+ ---
67
+
68
+ [Project-specific Cursor rules go here]
69
+ ```
70
+
71
+ `.cursor/mcp.json` should include Context7 (and optionally Arcade):
72
+
73
+ ```json
74
+ {
75
+ "mcpServers": {
76
+ "context7": {
77
+ "command": "npx",
78
+ "args": ["-y", "@upstash/context7-mcp"]
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## Work Log
85
+
86
+ - 2025-11-27 Created ticket
@@ -0,0 +1,73 @@
1
+ # Tickets
2
+
3
+ Higher-level feature/epic tracking. Each ticket references planning docs.
4
+
5
+ ## Structure
6
+
7
+ - `./` - Active tickets (in progress or todo)
8
+ - `completed/` - Verified completed tickets (user confirmed)
9
+ - `archived/` - Blocked or cancelled tickets
10
+
11
+ ## Naming Convention
12
+
13
+ **Tickets:** `{id}-{feature-slug}.md`
14
+ - Example: `001-user-authentication.md`, `002-payment-flow.md`
15
+
16
+ **Planning docs share same prefix:**
17
+ - User stories: `./.safeword/planning/user-stories/001-user-authentication.md`
18
+ - Test definitions: `./.safeword/planning/test-definitions/001-user-authentication.md`
19
+ - Design doc: `./.safeword/planning/design/001-user-authentication.md`
20
+
21
+ This makes it easy to find all related docs by prefix.
22
+
23
+ ## Format
24
+
25
+ ```markdown
26
+ ---
27
+ id: 001
28
+ status: todo|in_progress|done|blocked
29
+ created: 2025-01-19T14:30:00Z
30
+ priority: low|medium|high
31
+ planning_refs:
32
+ - ./.safeword/planning/user-stories/001-user-authentication.md
33
+ - ./.safeword/planning/test-definitions/001-user-authentication.md
34
+ - ./.safeword/planning/design/001-user-authentication.md (if complex)
35
+ ---
36
+
37
+ # User Authentication System
38
+
39
+ ## Description
40
+ {High-level feature description}
41
+
42
+ ## Scope
43
+ {What's included in this ticket}
44
+
45
+ ## Acceptance Criteria
46
+ - [ ] All user stories completed
47
+ - [ ] All tests passing
48
+ - [ ] Documentation updated
49
+
50
+ ## Work Log
51
+ {Progress notes, decisions, blockers}
52
+ ```
53
+
54
+ ## Completion Process
55
+
56
+ **CRITICAL:** Never mark ticket as done or archive without user confirmation.
57
+
58
+ 1. Update status to `done` when work complete
59
+ 2. **Ask user to confirm** all acceptance criteria met
60
+ 3. User verifies:
61
+ - All tests passing
62
+ - Feature works as expected
63
+ - No regressions introduced
64
+ 4. After confirmation: Move to `completed/`
65
+ 5. Blocked/cancelled tickets: Move to `archived/`
66
+
67
+ ## Relationship
68
+
69
+ - **Ticket** = Higher-level feature/epic
70
+ - **Planning docs** = Detailed specs (user stories, test definitions, design)
71
+ - **TodoWrite** = Task-level tracking in current session
72
+
73
+ See `@./.safeword/SAFEWORD.md` → Ticket System for details.
@@ -0,0 +1 @@
1
+ 0.1.0
package/AGENTS.md ADDED
@@ -0,0 +1,59 @@
1
+ **⚠️ ALWAYS READ FIRST: @./.safeword/SAFEWORD.md**
2
+
3
+ The SAFEWORD.md file contains core development patterns, workflows, and conventions.
4
+ Read it BEFORE working on any task in this project.
5
+
6
+ ---
7
+
8
+ # SAFEWORD - AI Agent Configuration CLI
9
+
10
+ A CLI tool that sets up AI coding agent configurations (guides, hooks, templates) for any project.
11
+
12
+ ## Project Purpose
13
+
14
+ **What:** `npx safeword setup` installs a `.safeword/` directory with guides, templates, and hooks into user projects.
15
+
16
+ **This repo is safeword's source code AND uses safeword itself (dogfooding).**
17
+
18
+ ## Directory Roles
19
+
20
+ | Directory | Role |
21
+ |-----------|------|
22
+ | `framework/` | **Source templates** - What the CLI copies to user projects |
23
+ | `packages/cli/` | **CLI source** - The `npx safeword` tool itself |
24
+ | `.safeword/` | **Dogfooding** - This project's own installed safeword config (tracked, generated by CLI) |
25
+ | `.claude/` | **Claude Code config** - Hooks, commands, skills for this project |
26
+
27
+ ## Tech Stack
28
+
29
+ | Component | Technology |
30
+ |-----------|------------|
31
+ | CLI | TypeScript, Commander.js, Node 18+ |
32
+ | Build | tsup (ESM-only output) |
33
+ | Tests | Vitest, promptfoo (LLM evals) |
34
+ | Linting | ESLint 9 + Prettier |
35
+
36
+ ## Development Workflow
37
+
38
+ ### Editing Source Templates
39
+
40
+ 1. Edit in `framework/` (source of truth)
41
+ 2. Run `npx safeword upgrade` to sync to `.safeword/`
42
+ 3. Run evals: `npm run eval`
43
+
44
+ ### Running LLM Evals
45
+
46
+ ```bash
47
+ npm run eval # Run all tests
48
+ npm run eval:view # Open web UI for results
49
+ ```
50
+
51
+ **Requires:** `ANTHROPIC_API_KEY` environment variable
52
+
53
+ ## Common Gotchas
54
+
55
+ 1. **framework/ vs .safeword/**: Edit `framework/` first, then run `npx safeword upgrade` to sync.
56
+
57
+ 2. **Eval failures**: Usually means the guide needs clearer instructions, not that the test is wrong.
58
+
59
+ 3. **Planning docs location**: All planning goes in `.safeword/planning/` per the SAFEWORD.md conventions.
package/CLAUDE.md ADDED
@@ -0,0 +1,12 @@
1
+ # Project Claude Context
2
+
3
+ **⚠️ ALWAYS READ FIRST: @./.safeword/SAFEWORD.md**
4
+
5
+ The SAFEWORD.md file contains core development patterns, workflows, and conventions.
6
+ Read it BEFORE working on any task in this project.
7
+
8
+ ---
9
+
10
+ ## Project-Specific Guidance
11
+
12
+ - Add Claude-specific context, commands, or workflow notes here