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.
- package/.claude/commands/arch-review.md +32 -0
- package/.claude/commands/lint.md +6 -0
- package/.claude/commands/quality-review.md +13 -0
- package/.claude/commands/setup-linting.md +6 -0
- package/.claude/hooks/auto-lint.sh +6 -0
- package/.claude/hooks/auto-quality-review.sh +170 -0
- package/.claude/hooks/check-linting-sync.sh +17 -0
- package/.claude/hooks/inject-timestamp.sh +6 -0
- package/.claude/hooks/question-protocol.sh +12 -0
- package/.claude/hooks/run-linters.sh +8 -0
- package/.claude/hooks/run-quality-review.sh +76 -0
- package/.claude/hooks/version-check.sh +10 -0
- package/.claude/mcp/README.md +96 -0
- package/.claude/mcp/arcade.sample.json +9 -0
- package/.claude/mcp/context7.sample.json +7 -0
- package/.claude/mcp/playwright.sample.json +7 -0
- package/.claude/settings.json +62 -0
- package/.claude/skills/quality-reviewer/SKILL.md +190 -0
- package/.claude/skills/safeword-quality-reviewer/SKILL.md +13 -0
- package/.env.arcade.example +4 -0
- package/.env.example +11 -0
- package/.gitmodules +4 -0
- package/.safeword/SAFEWORD.md +33 -0
- package/.safeword/eslint/eslint-base.mjs +101 -0
- package/.safeword/guides/architecture-guide.md +404 -0
- package/.safeword/guides/code-philosophy.md +174 -0
- package/.safeword/guides/context-files-guide.md +405 -0
- package/.safeword/guides/data-architecture-guide.md +183 -0
- package/.safeword/guides/design-doc-guide.md +165 -0
- package/.safeword/guides/learning-extraction.md +515 -0
- package/.safeword/guides/llm-instruction-design.md +239 -0
- package/.safeword/guides/llm-prompting.md +95 -0
- package/.safeword/guides/tdd-best-practices.md +570 -0
- package/.safeword/guides/test-definitions-guide.md +243 -0
- package/.safeword/guides/testing-methodology.md +573 -0
- package/.safeword/guides/user-story-guide.md +237 -0
- package/.safeword/guides/zombie-process-cleanup.md +214 -0
- package/{templates → .safeword}/hooks/agents-md-check.sh +0 -0
- package/{templates → .safeword}/hooks/post-tool.sh +0 -0
- package/{templates → .safeword}/hooks/pre-commit.sh +0 -0
- package/.safeword/planning/002-user-story-quality-evaluation.md +1840 -0
- package/.safeword/planning/003-langsmith-eval-setup-prompt.md +363 -0
- package/.safeword/planning/004-llm-eval-test-cases.md +3226 -0
- package/.safeword/planning/005-architecture-enforcement-system.md +169 -0
- package/.safeword/planning/006-reactive-fix-prevention-research.md +135 -0
- package/.safeword/planning/011-cli-ux-vision.md +330 -0
- package/.safeword/planning/012-project-structure-cleanup.md +154 -0
- package/.safeword/planning/README.md +39 -0
- package/.safeword/planning/automation-plan-v2.md +1225 -0
- package/.safeword/planning/automation-plan-v3.md +1291 -0
- package/.safeword/planning/automation-plan.md +3058 -0
- package/.safeword/planning/design/005-cli-implementation.md +343 -0
- package/.safeword/planning/design/013-cli-self-contained-templates.md +596 -0
- package/.safeword/planning/design/013a-eslint-plugin-suite.md +256 -0
- package/.safeword/planning/design/013b-implementation-snippets.md +385 -0
- package/.safeword/planning/design/013c-config-isolation-strategy.md +242 -0
- package/.safeword/planning/design/code-philosophy-improvements.md +60 -0
- package/.safeword/planning/mcp-analysis.md +545 -0
- package/.safeword/planning/phase2-subagents-vs-skills-analysis.md +451 -0
- package/.safeword/planning/settings-improvements.md +970 -0
- package/.safeword/planning/test-definitions/005-cli-implementation.md +1301 -0
- package/.safeword/planning/test-definitions/cli-self-contained-templates.md +205 -0
- package/.safeword/planning/user-stories/001-guides-review-user-stories.md +1381 -0
- package/.safeword/planning/user-stories/003-reactive-fix-prevention.md +132 -0
- package/.safeword/planning/user-stories/004-technical-constraints.md +86 -0
- package/.safeword/planning/user-stories/005-cli-implementation.md +311 -0
- package/.safeword/planning/user-stories/cli-self-contained-templates.md +172 -0
- package/.safeword/planning/versioned-distribution.md +740 -0
- package/.safeword/prompts/arch-review.md +43 -0
- package/.safeword/prompts/quality-review.md +11 -0
- package/.safeword/scripts/arch-review.sh +235 -0
- package/.safeword/scripts/check-linting-sync.sh +58 -0
- package/.safeword/scripts/setup-linting.sh +559 -0
- package/.safeword/templates/architecture-template.md +136 -0
- package/.safeword/templates/ci/architecture-check.yml +79 -0
- package/.safeword/templates/design-doc-template.md +127 -0
- package/.safeword/templates/test-definitions-feature.md +100 -0
- package/.safeword/templates/ticket-template.md +74 -0
- package/.safeword/templates/user-stories-template.md +82 -0
- package/.safeword/tickets/001-guides-review-user-stories.md +83 -0
- package/.safeword/tickets/002-architecture-enforcement.md +211 -0
- package/.safeword/tickets/003-reactive-fix-prevention.md +57 -0
- package/.safeword/tickets/004-technical-constraints-in-user-stories.md +39 -0
- package/.safeword/tickets/005-cli-implementation.md +248 -0
- package/.safeword/tickets/006-flesh-out-skills.md +43 -0
- package/.safeword/tickets/007-flesh-out-questioning.md +44 -0
- package/.safeword/tickets/008-upgrade-questioning.md +58 -0
- package/.safeword/tickets/009-naming-conventions.md +41 -0
- package/.safeword/tickets/010-safeword-md-cleanup.md +34 -0
- package/.safeword/tickets/011-cursor-setup.md +86 -0
- package/.safeword/tickets/README.md +73 -0
- package/.safeword/version +1 -0
- package/AGENTS.md +59 -0
- package/CLAUDE.md +12 -0
- package/README.md +347 -0
- package/docs/001-cli-implementation-plan.md +856 -0
- package/docs/elite-dx-implementation-plan.md +1034 -0
- package/framework/README.md +131 -0
- package/framework/mcp/README.md +96 -0
- package/framework/mcp/arcade.sample.json +8 -0
- package/framework/mcp/context7.sample.json +6 -0
- package/framework/mcp/playwright.sample.json +6 -0
- package/framework/scripts/arch-review.sh +235 -0
- package/framework/scripts/check-linting-sync.sh +58 -0
- package/framework/scripts/load-env.sh +49 -0
- package/framework/scripts/setup-claude.sh +223 -0
- package/framework/scripts/setup-linting.sh +559 -0
- package/framework/scripts/setup-quality.sh +477 -0
- package/framework/scripts/setup-safeword.sh +550 -0
- package/framework/templates/ci/architecture-check.yml +78 -0
- package/learnings/ai-sdk-v5-breaking-changes.md +178 -0
- package/learnings/e2e-test-zombie-processes.md +231 -0
- package/learnings/milkdown-crepe-editor-property.md +96 -0
- package/learnings/prosemirror-fragment-traversal.md +119 -0
- package/package.json +19 -43
- package/packages/cli/AGENTS.md +1 -0
- package/packages/cli/ARCHITECTURE.md +279 -0
- package/packages/cli/package.json +51 -0
- package/packages/cli/src/cli.ts +63 -0
- package/packages/cli/src/commands/check.ts +166 -0
- package/packages/cli/src/commands/diff.ts +209 -0
- package/packages/cli/src/commands/reset.ts +190 -0
- package/packages/cli/src/commands/setup.ts +325 -0
- package/packages/cli/src/commands/upgrade.ts +163 -0
- package/packages/cli/src/index.ts +3 -0
- package/packages/cli/src/templates/config.ts +58 -0
- package/packages/cli/src/templates/content.ts +18 -0
- package/packages/cli/src/templates/index.ts +12 -0
- package/packages/cli/src/utils/agents-md.ts +66 -0
- package/packages/cli/src/utils/fs.ts +179 -0
- package/packages/cli/src/utils/git.ts +124 -0
- package/packages/cli/src/utils/hooks.ts +29 -0
- package/packages/cli/src/utils/output.ts +60 -0
- package/packages/cli/src/utils/project-detector.test.ts +185 -0
- package/packages/cli/src/utils/project-detector.ts +44 -0
- package/packages/cli/src/utils/version.ts +28 -0
- package/packages/cli/src/version.ts +6 -0
- package/packages/cli/templates/SAFEWORD.md +776 -0
- package/packages/cli/templates/doc-templates/architecture-template.md +136 -0
- package/packages/cli/templates/doc-templates/design-doc-template.md +134 -0
- package/packages/cli/templates/doc-templates/test-definitions-feature.md +131 -0
- package/packages/cli/templates/doc-templates/ticket-template.md +82 -0
- package/packages/cli/templates/doc-templates/user-stories-template.md +92 -0
- package/packages/cli/templates/guides/architecture-guide.md +423 -0
- package/packages/cli/templates/guides/code-philosophy.md +195 -0
- package/packages/cli/templates/guides/context-files-guide.md +457 -0
- package/packages/cli/templates/guides/data-architecture-guide.md +200 -0
- package/packages/cli/templates/guides/design-doc-guide.md +171 -0
- package/packages/cli/templates/guides/learning-extraction.md +552 -0
- package/packages/cli/templates/guides/llm-instruction-design.md +248 -0
- package/packages/cli/templates/guides/llm-prompting.md +102 -0
- package/packages/cli/templates/guides/tdd-best-practices.md +615 -0
- package/packages/cli/templates/guides/test-definitions-guide.md +334 -0
- package/packages/cli/templates/guides/testing-methodology.md +618 -0
- package/packages/cli/templates/guides/user-story-guide.md +256 -0
- package/packages/cli/templates/guides/zombie-process-cleanup.md +219 -0
- package/packages/cli/templates/hooks/agents-md-check.sh +27 -0
- package/packages/cli/templates/hooks/post-tool.sh +4 -0
- package/packages/cli/templates/hooks/pre-commit.sh +10 -0
- package/packages/cli/templates/prompts/arch-review.md +43 -0
- package/packages/cli/templates/prompts/quality-review.md +10 -0
- package/packages/cli/templates/skills/safeword-quality-reviewer/SKILL.md +207 -0
- package/packages/cli/tests/commands/check.test.ts +129 -0
- package/packages/cli/tests/commands/cli.test.ts +89 -0
- package/packages/cli/tests/commands/diff.test.ts +115 -0
- package/packages/cli/tests/commands/reset.test.ts +310 -0
- package/packages/cli/tests/commands/self-healing.test.ts +170 -0
- package/packages/cli/tests/commands/setup-blocking.test.ts +71 -0
- package/packages/cli/tests/commands/setup-core.test.ts +135 -0
- package/packages/cli/tests/commands/setup-git.test.ts +139 -0
- package/packages/cli/tests/commands/setup-hooks.test.ts +334 -0
- package/packages/cli/tests/commands/setup-linting.test.ts +189 -0
- package/packages/cli/tests/commands/setup-noninteractive.test.ts +80 -0
- package/packages/cli/tests/commands/setup-templates.test.ts +181 -0
- package/packages/cli/tests/commands/upgrade.test.ts +215 -0
- package/packages/cli/tests/helpers.ts +243 -0
- package/packages/cli/tests/npm-package.test.ts +83 -0
- package/packages/cli/tests/technical-constraints.test.ts +96 -0
- package/packages/cli/tsconfig.json +25 -0
- package/packages/cli/tsup.config.ts +11 -0
- package/packages/cli/vitest.config.ts +23 -0
- package/promptfoo.yaml +3270 -0
- package/dist/check-3NGQ4NR5.js +0 -129
- package/dist/check-3NGQ4NR5.js.map +0 -1
- package/dist/chunk-2XWIUEQK.js +0 -190
- package/dist/chunk-2XWIUEQK.js.map +0 -1
- package/dist/chunk-GZRQL3SX.js +0 -146
- package/dist/chunk-GZRQL3SX.js.map +0 -1
- package/dist/chunk-ORQHKDT2.js +0 -10
- package/dist/chunk-ORQHKDT2.js.map +0 -1
- package/dist/chunk-W66Z3C5H.js +0 -21
- package/dist/chunk-W66Z3C5H.js.map +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -34
- package/dist/cli.js.map +0 -1
- package/dist/diff-Y6QTAW4O.js +0 -166
- package/dist/diff-Y6QTAW4O.js.map +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/reset-3ACTIYYE.js +0 -143
- package/dist/reset-3ACTIYYE.js.map +0 -1
- package/dist/setup-RR4M334C.js +0 -266
- package/dist/setup-RR4M334C.js.map +0 -1
- package/dist/upgrade-6AR3DHUV.js +0 -134
- package/dist/upgrade-6AR3DHUV.js.map +0 -1
- /package/{templates → framework}/SAFEWORD.md +0 -0
- /package/{templates → framework}/guides/architecture-guide.md +0 -0
- /package/{templates → framework}/guides/code-philosophy.md +0 -0
- /package/{templates → framework}/guides/context-files-guide.md +0 -0
- /package/{templates → framework}/guides/data-architecture-guide.md +0 -0
- /package/{templates → framework}/guides/design-doc-guide.md +0 -0
- /package/{templates → framework}/guides/learning-extraction.md +0 -0
- /package/{templates → framework}/guides/llm-instruction-design.md +0 -0
- /package/{templates → framework}/guides/llm-prompting.md +0 -0
- /package/{templates → framework}/guides/tdd-best-practices.md +0 -0
- /package/{templates → framework}/guides/test-definitions-guide.md +0 -0
- /package/{templates → framework}/guides/testing-methodology.md +0 -0
- /package/{templates → framework}/guides/user-story-guide.md +0 -0
- /package/{templates → framework}/guides/zombie-process-cleanup.md +0 -0
- /package/{templates → framework}/prompts/arch-review.md +0 -0
- /package/{templates → framework}/prompts/quality-review.md +0 -0
- /package/{templates/skills/safeword-quality-reviewer → framework/skills/quality-reviewer}/SKILL.md +0 -0
- /package/{templates/doc-templates → framework/templates}/architecture-template.md +0 -0
- /package/{templates/doc-templates → framework/templates}/design-doc-template.md +0 -0
- /package/{templates/doc-templates → framework/templates}/test-definitions-feature.md +0 -0
- /package/{templates/doc-templates → framework/templates}/ticket-template.md +0 -0
- /package/{templates/doc-templates → framework/templates}/user-stories-template.md +0 -0
- /package/{templates → packages/cli/templates}/commands/arch-review.md +0 -0
- /package/{templates → packages/cli/templates}/commands/lint.md +0 -0
- /package/{templates → packages/cli/templates}/commands/quality-review.md +0 -0
- /package/{templates → packages/cli/templates}/hooks/inject-timestamp.sh +0 -0
- /package/{templates → packages/cli/templates}/lib/common.sh +0 -0
- /package/{templates → packages/cli/templates}/lib/jq-fallback.sh +0 -0
- /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
|