safeword 0.8.0 → 0.8.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "safeword",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "CLI for setting up and managing safeword development environments",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,18 +19,6 @@
19
19
  "engines": {
20
20
  "node": ">=18"
21
21
  },
22
- "scripts": {
23
- "build": "tsup",
24
- "dev": "tsup --watch",
25
- "test": "vitest run",
26
- "test:e2e": "vitest run tests/e2e/",
27
- "test:watch": "vitest",
28
- "test:coverage": "vitest run --coverage",
29
- "typecheck": "tsc --noEmit",
30
- "lint": "eslint src tests",
31
- "clean": "rm -rf dist",
32
- "prepublishOnly": "npm run build && npm test"
33
- },
34
22
  "dependencies": {
35
23
  "commander": "^12.1.0"
36
24
  },
@@ -48,5 +36,16 @@
48
36
  "claude-code"
49
37
  ],
50
38
  "author": "",
51
- "license": "MIT"
52
- }
39
+ "license": "MIT",
40
+ "scripts": {
41
+ "build": "tsup",
42
+ "dev": "tsup --watch",
43
+ "test": "vitest run",
44
+ "test:e2e": "vitest run tests/e2e/",
45
+ "test:watch": "vitest",
46
+ "test:coverage": "vitest run --coverage",
47
+ "typecheck": "tsc --noEmit",
48
+ "lint": "eslint src tests",
49
+ "clean": "rm -rf dist"
50
+ }
51
+ }
@@ -1,7 +1,7 @@
1
1
  # Design: [Feature Name]
2
2
 
3
- **Guide**: `@./.safeword/guides/design-doc-guide.md` - Principles, structure guidelines, and avoiding bloat
4
- **Template**: `@./.safeword/templates/design-doc-template.md`
3
+ **Guide**: `.safeword/guides/design-doc-guide.md` - Principles, structure guidelines, and avoiding bloat
4
+ **Template**: `.safeword/templates/design-doc-template.md`
5
5
 
6
6
  **Related**: Feature Spec: `[path]` | Test Definitions: `[path]`
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Feature Spec: [Feature Name] (Issue #[number])
2
2
 
3
- **Guide**: `@./.safeword/guides/planning-guide.md` - Best practices, INVEST criteria, and examples
4
- **Template**: `@./.safeword/templates/feature-spec-template.md`
3
+ **Guide**: `.safeword/guides/planning-guide.md` - Best practices, INVEST criteria, and examples
4
+ **Template**: `.safeword/templates/feature-spec-template.md`
5
5
 
6
6
  **Feature**: [Brief description of the feature]
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Task: [Name]
2
2
 
3
- **Guide**: `@./.safeword/guides/planning-guide.md`
4
- **Template**: `@./.safeword/templates/task-spec-template.md`
3
+ **Guide**: `.safeword/guides/planning-guide.md`
4
+ **Template**: `.safeword/templates/task-spec-template.md`
5
5
 
6
6
  ---
7
7
 
@@ -148,4 +148,4 @@ The spec takes 30 seconds to write and prevents hours of scope creep.
148
148
  | **Task Spec (L1)** | Bug, improvement, internal, refactor | Task spec with inline tests |
149
149
  | **Task Spec (L0)** | Typo, config, trivial | Minimal task spec, existing tests |
150
150
 
151
- For L2 features, use: `@./.safeword/templates/feature-spec-template.md`
151
+ For L2 features, use: `.safeword/templates/feature-spec-template.md`
@@ -1,7 +1,7 @@
1
1
  # Test Definitions: [Feature Name] (Issue #[number])
2
2
 
3
- **Guide**: `@./.safeword/guides/testing-guide.md` - Structure, status tracking, and TDD workflow
4
- **Template**: `@./.safeword/templates/test-definitions-feature.md`
3
+ **Guide**: `.safeword/guides/testing-guide.md` - Structure, status tracking, and TDD workflow
4
+ **Template**: `.safeword/templates/test-definitions-feature.md`
5
5
 
6
6
  **Feature**: [Brief description of the feature]
7
7
 
@@ -25,15 +25,15 @@ How to write specs, user stories, and test definitions before implementation.
25
25
 
26
26
  ## Templates
27
27
 
28
- | Need | Template |
29
- | ------------------------------- | ---------------------------------------------------- |
30
- | L2 Feature spec | `@./.safeword/templates/feature-spec-template.md` |
31
- | L1/L0 Task spec | `@./.safeword/templates/task-spec-template.md` |
32
- | L2 Test definitions | `@./.safeword/templates/test-definitions-feature.md` |
33
- | Complex feature design | `@./.safeword/templates/design-doc-template.md` |
34
- | Architectural decision | `@./.safeword/templates/architecture-template.md` |
35
- | Context anchor for complex work | `@./.safeword/templates/ticket-template.md` |
36
- | Execution scratch pad | `@./.safeword/templates/work-log-template.md` |
28
+ | Need | Template |
29
+ | ------------------------------- | ------------------------------------------------- |
30
+ | L2 Feature spec | `.safeword/templates/feature-spec-template.md` |
31
+ | L1/L0 Task spec | `.safeword/templates/task-spec-template.md` |
32
+ | L2 Test definitions | `.safeword/templates/test-definitions-feature.md` |
33
+ | Complex feature design | `.safeword/templates/design-doc-template.md` |
34
+ | Architectural decision | `.safeword/templates/architecture-template.md` |
35
+ | Context anchor for complex work | `.safeword/templates/ticket-template.md` |
36
+ | Execution scratch pad | `.safeword/templates/work-log-template.md` |
37
37
 
38
38
  ---
39
39
 
@@ -240,7 +240,7 @@ Test: All existing tests pass, no new mutations
240
240
 
241
241
  ### How to Fill Out Test Definitions
242
242
 
243
- 1. Read `@./.safeword/templates/test-definitions-feature.md`
243
+ 1. Read `.safeword/templates/test-definitions-feature.md`
244
244
  2. Read user story's Technical Constraints section (if exists)
245
245
  3. Fill in feature name, issue number, test file path
246
246
  4. Organize tests into logical suites
@@ -272,7 +272,7 @@ export default defineConfig({
272
272
  }
273
273
  ```
274
274
 
275
- **Cleanup:** See `@./.safeword/guides/zombie-process-cleanup.md` for killing zombie servers.
275
+ **Cleanup:** See `.safeword/guides/zombie-process-cleanup.md` for killing zombie servers.
276
276
 
277
277
  ---
278
278
 
@@ -202,6 +202,7 @@ ps aux | grep "/Users/alex/projects/my-project"
202
202
  | Kill all for this project | `./scripts/cleanup.sh` |
203
203
  | Check what's on port | `lsof -i:3000` |
204
204
  | Find zombie processes | `ps aux \| grep -E "(node\|playwright\|chromium)"` |
205
+ | Preview what `pkill -f` would kill | `pgrep -f "pattern"` (verify before running pkill) |
205
206
  | Kill by process ID | `kill -9 <PID>` |
206
207
 
207
208
  ---
@@ -210,6 +211,7 @@ ps aux | grep "/Users/alex/projects/my-project"
210
211
 
211
212
  ❌ **DON'T:** `killall node` (kills all projects)
212
213
  ❌ **DON'T:** `pkill -9 node` (kills all projects)
214
+ ❌ **DON'T:** `pkill -f "pattern"` without `pgrep -f` first (matches full command line, can kill unintended processes)
213
215
  ❌ **DON'T:** Kill processes without checking working directory
214
216
  ❌ **DON'T:** Assume zombie browsers will clean themselves up (they won't)
215
217
 
File without changes
@@ -138,15 +138,37 @@ Before starting Phase 1, create or open a work log:
138
138
  - [ ] No hardcoded/mock values
139
139
  - [ ] Committed
140
140
 
141
+ ### Verification Gate
142
+
143
+ **Before claiming GREEN:** Evidence before claims, always.
144
+
145
+ ```text
146
+ ✅ CORRECT ❌ WRONG
147
+ ───────────────────────────────── ─────────────────────────────────
148
+ Run: npm test "Tests should pass now"
149
+ Output: ✓ 34/34 tests pass "I'm confident this works"
150
+ Claim: "All tests pass" "Tests pass" (no output shown)
151
+ ```
152
+
153
+ **The Rule:** If you haven't run the verification command in this response, you cannot claim it passes.
154
+
155
+ | Claim | Requires | Not Sufficient |
156
+ | ---------------- | ----------------------------- | --------------------------- |
157
+ | "Tests pass" | Fresh test output: 0 failures | "should pass", previous run |
158
+ | "Build succeeds" | Build command: exit 0 | "linter passed" |
159
+ | "Bug fixed" | Original symptom test passes | "code changed" |
160
+
141
161
  **Red Flags → STOP:**
142
162
 
143
- | Flag | Action |
144
- | ------------------- | -------------------------------------- |
145
- | "Just in case" code | Delete it |
146
- | Multiple functions | Delete extras |
147
- | Refactoring | Stop - that's Phase 3 |
148
- | Test still fails | Debug (→ systematic-debugger if stuck) |
149
- | Hardcoded value | Implement real logic (see below) |
163
+ | Flag | Action |
164
+ | --------------------------- | -------------------------------------- |
165
+ | "should", "probably" claims | Run command, show output first |
166
+ | "Done!" before verification | Run command, show output first |
167
+ | "Just in case" code | Delete it |
168
+ | Multiple functions | Delete extras |
169
+ | Refactoring | Stop - that's Phase 3 |
170
+ | Test still fails | Debug (→ systematic-debugger if stuck) |
171
+ | Hardcoded value | Implement real logic (see below) |
150
172
 
151
173
  ### Anti-Pattern: Mock Implementations
152
174