safeword 0.1.0 → 0.2.0
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/dist/{check-J6DFVBCE.js → check-FHNTC46G.js} +2 -2
- package/dist/check-FHNTC46G.js.map +1 -0
- package/dist/chunk-2XWIUEQK.js +190 -0
- package/dist/chunk-2XWIUEQK.js.map +1 -0
- package/dist/{chunk-UQMQ64CB.js → chunk-GZRQL3SX.js} +41 -2
- package/dist/chunk-GZRQL3SX.js.map +1 -0
- package/dist/cli.js +5 -5
- package/dist/{diff-U4IELWRL.js → diff-SPJ7BJBG.js} +31 -28
- package/dist/diff-SPJ7BJBG.js.map +1 -0
- package/dist/{reset-XETOHTCK.js → reset-3ACTIYYE.js} +44 -27
- package/dist/reset-3ACTIYYE.js.map +1 -0
- package/dist/{setup-CLDCHROZ.js → setup-ANC3NUOC.js} +76 -47
- package/dist/setup-ANC3NUOC.js.map +1 -0
- package/dist/{upgrade-DOKWRK7J.js → upgrade-3KVLLNDF.js} +37 -49
- package/dist/upgrade-3KVLLNDF.js.map +1 -0
- package/package.json +1 -1
- package/templates/SAFEWORD.md +776 -0
- package/templates/commands/arch-review.md +24 -0
- package/templates/commands/lint.md +11 -0
- package/templates/commands/quality-review.md +23 -0
- package/templates/doc-templates/architecture-template.md +136 -0
- package/templates/doc-templates/design-doc-template.md +134 -0
- package/templates/doc-templates/test-definitions-feature.md +131 -0
- package/templates/doc-templates/user-stories-template.md +92 -0
- package/templates/guides/architecture-guide.md +423 -0
- package/templates/guides/code-philosophy.md +195 -0
- package/templates/guides/context-files-guide.md +457 -0
- package/templates/guides/data-architecture-guide.md +200 -0
- package/templates/guides/design-doc-guide.md +171 -0
- package/templates/guides/learning-extraction.md +552 -0
- package/templates/guides/llm-instruction-design.md +248 -0
- package/templates/guides/llm-prompting.md +102 -0
- package/templates/guides/tdd-best-practices.md +615 -0
- package/templates/guides/test-definitions-guide.md +334 -0
- package/templates/guides/testing-methodology.md +618 -0
- package/templates/guides/user-story-guide.md +256 -0
- package/templates/guides/zombie-process-cleanup.md +219 -0
- package/templates/hooks/agents-md-check.sh +27 -0
- package/templates/hooks/inject-timestamp.sh +2 -3
- package/templates/hooks/post-tool.sh +4 -0
- package/templates/hooks/pre-commit.sh +10 -0
- package/templates/lib/common.sh +26 -0
- package/templates/lib/jq-fallback.sh +20 -0
- package/templates/markdownlint.jsonc +25 -0
- package/templates/prompts/arch-review.md +43 -0
- package/templates/prompts/quality-review.md +10 -0
- package/templates/skills/safeword-quality-reviewer/SKILL.md +207 -0
- package/dist/check-J6DFVBCE.js.map +0 -1
- package/dist/chunk-24OB57NJ.js +0 -78
- package/dist/chunk-24OB57NJ.js.map +0 -1
- package/dist/chunk-DB4CMUFD.js +0 -157
- package/dist/chunk-DB4CMUFD.js.map +0 -1
- package/dist/chunk-UQMQ64CB.js.map +0 -1
- package/dist/diff-U4IELWRL.js.map +0 -1
- package/dist/reset-XETOHTCK.js.map +0 -1
- package/dist/setup-CLDCHROZ.js.map +0 -1
- package/dist/upgrade-DOKWRK7J.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Architecture Review
|
|
2
|
+
|
|
3
|
+
Review code changes against project architecture guidelines.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Before committing significant changes
|
|
8
|
+
- When adding new modules or dependencies
|
|
9
|
+
- When refactoring existing code
|
|
10
|
+
|
|
11
|
+
## What It Does
|
|
12
|
+
|
|
13
|
+
1. Checks code against architecture guide
|
|
14
|
+
2. Verifies layer boundaries
|
|
15
|
+
3. Validates dependency directions
|
|
16
|
+
4. Reports violations
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/arch-review
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then describe the changes to review.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Quality Review
|
|
2
|
+
|
|
3
|
+
Deep code quality review with web research.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- User explicitly requests verification against latest docs
|
|
8
|
+
- Need deeper analysis beyond automatic hook
|
|
9
|
+
- Working on projects without SAFEWORD.md/CLAUDE.md
|
|
10
|
+
|
|
11
|
+
## What It Does
|
|
12
|
+
|
|
13
|
+
1. Fetches current documentation (WebFetch)
|
|
14
|
+
2. Checks latest versions (WebSearch)
|
|
15
|
+
3. Provides deep analysis (performance, security, alternatives)
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/quality-review
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Then describe what you want reviewed.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# [Project Name] Architecture
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0
|
|
4
|
+
**Last Updated:** YYYY-MM-DD
|
|
5
|
+
**Status:** Design | Production | Proposed | Deprecated
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
- [Overview](#overview)
|
|
12
|
+
- [Layers & Boundaries](#layers--boundaries)
|
|
13
|
+
- [Data Model](#data-model)
|
|
14
|
+
- [Key Decisions](#key-decisions)
|
|
15
|
+
- [Best Practices](#best-practices)
|
|
16
|
+
- [Migration Strategy](#migration-strategy)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Overview
|
|
21
|
+
|
|
22
|
+
[High-level description of the system architecture, technology choices, and design philosophy.]
|
|
23
|
+
|
|
24
|
+
### Tech Stack
|
|
25
|
+
|
|
26
|
+
| Category | Choice | Rationale |
|
|
27
|
+
| ---------------- | ------ | --------- |
|
|
28
|
+
| Language | | |
|
|
29
|
+
| Framework | | |
|
|
30
|
+
| Database | | |
|
|
31
|
+
| State Management | | |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Layers & Boundaries
|
|
36
|
+
|
|
37
|
+
### Layer Definitions
|
|
38
|
+
|
|
39
|
+
| Layer | Directory | Responsibility |
|
|
40
|
+
| ------ | ------------- | ------------------------------ |
|
|
41
|
+
| app | `src/app/` | UI, routing, composition |
|
|
42
|
+
| domain | `src/domain/` | Business rules, pure logic |
|
|
43
|
+
| infra | `src/infra/` | IO, APIs, DB, external SDKs |
|
|
44
|
+
| shared | `src/shared/` | Utilities usable by all layers |
|
|
45
|
+
|
|
46
|
+
### Allowed Dependencies
|
|
47
|
+
|
|
48
|
+
| From | To | Allowed | Rationale |
|
|
49
|
+
| ------ | ------ | ------- | ------------------------------------------------- |
|
|
50
|
+
| app | domain | ✅ | UI composes business logic |
|
|
51
|
+
| app | infra | ✅ | UI triggers side effects |
|
|
52
|
+
| app | shared | ✅ | Utilities available everywhere |
|
|
53
|
+
| domain | app | ❌ | Domain must be framework-agnostic |
|
|
54
|
+
| domain | infra | ❌ | Domain contains pure logic only |
|
|
55
|
+
| domain | shared | ✅ | Utilities available everywhere |
|
|
56
|
+
| infra | domain | ✅ | Adapters may use domain types |
|
|
57
|
+
| infra | app | ❌ | Infra should not depend on UI |
|
|
58
|
+
| infra | shared | ✅ | Utilities available everywhere |
|
|
59
|
+
| shared | \* | ❌ | Shared has no dependencies (except external libs) |
|
|
60
|
+
|
|
61
|
+
**Note:** This template allows direct app→infra. Alternative: force app→domain→infra for stricter separation (hexagonal/ports-adapters pattern).
|
|
62
|
+
|
|
63
|
+
### Boundary Enforcement
|
|
64
|
+
|
|
65
|
+
Boundaries enforced via `eslint-plugin-boundaries`. See `.safeword/guides/architecture-guide.md` → Enforcement with eslint-plugin-boundaries for setup.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Data Model
|
|
70
|
+
|
|
71
|
+
### Entities
|
|
72
|
+
|
|
73
|
+
| Entity | Table/Collection | Description |
|
|
74
|
+
| ------ | ---------------- | ----------- |
|
|
75
|
+
| | | |
|
|
76
|
+
|
|
77
|
+
### Relationships
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
[Entity A] 1──n [Entity B]
|
|
81
|
+
[Entity B] n──n [Entity C]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Schema Notes
|
|
85
|
+
|
|
86
|
+
- [Key constraints, indexes, etc.]
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Key Decisions
|
|
91
|
+
|
|
92
|
+
### [Decision Title]
|
|
93
|
+
|
|
94
|
+
**Status:** Active | Superseded | Deprecated
|
|
95
|
+
**Date:** YYYY-MM-DD
|
|
96
|
+
|
|
97
|
+
| Field | Value |
|
|
98
|
+
| -------------- | --------------------------------------------- |
|
|
99
|
+
| What | [The decision in 1-2 sentences] |
|
|
100
|
+
| Why | [Rationale with specifics - numbers, metrics] |
|
|
101
|
+
| Trade-off | [What we gave up or accepted] |
|
|
102
|
+
| Alternatives | [Other options considered and why rejected] |
|
|
103
|
+
| Implementation | [File references: `src/path/file.ts:12-45`] |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Best Practices
|
|
108
|
+
|
|
109
|
+
### [Pattern Name]
|
|
110
|
+
|
|
111
|
+
**What:** [Brief description]
|
|
112
|
+
**Why:** [Rationale]
|
|
113
|
+
**Example:** See `src/path/example.ts`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Migration Strategy
|
|
118
|
+
|
|
119
|
+
### From [Previous State] to [Target State]
|
|
120
|
+
|
|
121
|
+
**Trigger:** [When to migrate]
|
|
122
|
+
**Steps:**
|
|
123
|
+
|
|
124
|
+
1. [Step 1]
|
|
125
|
+
2. [Step 2]
|
|
126
|
+
|
|
127
|
+
**Rollback:** [How to revert if needed]
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Appendix
|
|
132
|
+
|
|
133
|
+
### References
|
|
134
|
+
|
|
135
|
+
- [Link to relevant docs]
|
|
136
|
+
- [Link to ADRs if migrating from ADR system]
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Design: [Feature Name]
|
|
2
|
+
|
|
3
|
+
**Guide**: `@./.safeword/guides/design-doc-guide.md` - Principles, structure guidelines, and avoiding bloat
|
|
4
|
+
**Template**: `@./.safeword/templates/design-doc-template.md`
|
|
5
|
+
|
|
6
|
+
**Related**: User Stories: `[path]` | Test Definitions: `[path]`
|
|
7
|
+
|
|
8
|
+
**TDD Note**: This design implements tests from Test Definitions. Reference specific test scenarios (e.g., "Test 3.1: Component X enables keyboard shortcut Y").
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
[1-2 paragraphs: High-level approach. What are we building and how does it fit together?]
|
|
13
|
+
|
|
14
|
+
**Diagram** (if applicable):
|
|
15
|
+
[Text diagram or link to visual]
|
|
16
|
+
|
|
17
|
+
## Components
|
|
18
|
+
|
|
19
|
+
### Component [N]: [ComponentName]
|
|
20
|
+
|
|
21
|
+
**What**: [Responsibility in 1 sentence]
|
|
22
|
+
**Where** (if applicable): `[file/path/component.ts]`
|
|
23
|
+
**Interface**:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Key types/interfaces
|
|
27
|
+
interface Example {
|
|
28
|
+
id: string;
|
|
29
|
+
// ...
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Key methods
|
|
33
|
+
function doSomething(input: Example): Result;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Dependencies**: [What it uses]
|
|
37
|
+
**Tests**: [Which test scenarios this component enables]
|
|
38
|
+
|
|
39
|
+
### Component [N+1]: [AnotherComponentName]
|
|
40
|
+
|
|
41
|
+
**What**: [Different responsibility than Component N]
|
|
42
|
+
**Where** (if applicable): `[different/file/path.ts]`
|
|
43
|
+
**Interface**:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// Different example
|
|
47
|
+
interface AnotherExample {
|
|
48
|
+
value: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function anotherMethod(input: AnotherExample): Output;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Dependencies**: [Different dependencies]
|
|
55
|
+
**Tests**: [Different test scenarios this enables]
|
|
56
|
+
|
|
57
|
+
## Data Model (if applicable)
|
|
58
|
+
|
|
59
|
+
[Describe state shape, database schema, or data structures. Include relationships between types and how data flows through the system.]
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// Core data structures
|
|
63
|
+
interface FeatureState {
|
|
64
|
+
items: Item[];
|
|
65
|
+
selectedId: string | null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interface Item {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
// ...
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Component Interaction (if applicable)
|
|
76
|
+
|
|
77
|
+
[How components communicate and data flows between them]
|
|
78
|
+
|
|
79
|
+
**Flow:**
|
|
80
|
+
Component [N] → Component [N+1]
|
|
81
|
+
|
|
82
|
+
**Events/Calls:**
|
|
83
|
+
|
|
84
|
+
- Component [N] triggers [event/method] in Component [N+1]
|
|
85
|
+
- Component [N+1] updates [state/data] consumed by [other components/system]
|
|
86
|
+
|
|
87
|
+
## User Flow
|
|
88
|
+
|
|
89
|
+
1. User [action, e.g., clicks "Toggle AI Pane" button, presses Cmd+J]
|
|
90
|
+
2. System [response, e.g., updates state, triggers re-render, calls API]
|
|
91
|
+
3. User sees [outcome, e.g., AI pane appears/disappears, loading spinner, error message]
|
|
92
|
+
|
|
93
|
+
## Key Decisions
|
|
94
|
+
|
|
95
|
+
### Decision [N]: [Technical choice]
|
|
96
|
+
|
|
97
|
+
**What**: [What we're using/doing]
|
|
98
|
+
**Why**: [Rationale with specifics - include metrics, benchmarks, or analysis]
|
|
99
|
+
**Trade-off**: [What we're giving up]
|
|
100
|
+
|
|
101
|
+
### Decision [N+1]: [Technical choice]
|
|
102
|
+
|
|
103
|
+
**What**: [Different choice than Decision N]
|
|
104
|
+
**Why**: [Rationale with specifics - include metrics, benchmarks, or analysis]
|
|
105
|
+
**Trade-off**: [Different trade-off]
|
|
106
|
+
|
|
107
|
+
## Implementation Notes (if applicable)
|
|
108
|
+
|
|
109
|
+
**Constraints**:
|
|
110
|
+
|
|
111
|
+
- [Technical limitation, e.g., "Must support Safari 14+", "No Node.js dependencies"]
|
|
112
|
+
- [Performance requirement, e.g., "< 200ms response time", "Bundle size < 100KB"]
|
|
113
|
+
|
|
114
|
+
**Error Handling**:
|
|
115
|
+
|
|
116
|
+
- [How errors are caught and handled]
|
|
117
|
+
- [User-facing vs internal errors]
|
|
118
|
+
- [Retry/fallback strategies]
|
|
119
|
+
|
|
120
|
+
**Gotchas**:
|
|
121
|
+
|
|
122
|
+
- [Edge case or common mistake]
|
|
123
|
+
- [Thing to watch out for]
|
|
124
|
+
|
|
125
|
+
**Open Questions**:
|
|
126
|
+
|
|
127
|
+
- [ ] [Blocking question]
|
|
128
|
+
- [ ] [Needs research]
|
|
129
|
+
|
|
130
|
+
## References (if applicable)
|
|
131
|
+
|
|
132
|
+
- [ADR-XXX: Related decision]
|
|
133
|
+
- [External docs or examples]
|
|
134
|
+
- [Proof of concept]
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Test Definitions: [Feature Name] (Issue #[number])
|
|
2
|
+
|
|
3
|
+
**Guide**: `@./.safeword/guides/test-definitions-guide.md` - Structure, status tracking, and TDD workflow
|
|
4
|
+
**Template**: `@./.safeword/templates/test-definitions-feature.md`
|
|
5
|
+
|
|
6
|
+
**Feature**: [Brief description of the feature]
|
|
7
|
+
|
|
8
|
+
**Related Issue**: #[number]
|
|
9
|
+
**Test File**: `[path/to/test.spec.ts]`
|
|
10
|
+
**Total Tests**: [N] ([X] passing, [Y] skipped, [Z] not implemented)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Test Suite [N]: [Suite Name]
|
|
15
|
+
|
|
16
|
+
[Brief description of what this test suite covers]
|
|
17
|
+
|
|
18
|
+
### Test [N.1]: [Test name] [✅/⏭️/❌]
|
|
19
|
+
|
|
20
|
+
**Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
|
|
21
|
+
**Description**: [What this test verifies]
|
|
22
|
+
|
|
23
|
+
**Steps**:
|
|
24
|
+
|
|
25
|
+
1. [Action 1]
|
|
26
|
+
2. [Action 2]
|
|
27
|
+
3. [Action 3]
|
|
28
|
+
|
|
29
|
+
**Expected**:
|
|
30
|
+
|
|
31
|
+
- [Expected outcome 1]
|
|
32
|
+
- [Expected outcome 2]
|
|
33
|
+
- [Expected outcome 3]
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
### Test [N.2]: [Test name] [✅/⏭️/❌]
|
|
38
|
+
|
|
39
|
+
**Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
|
|
40
|
+
**Description**: [What this test verifies]
|
|
41
|
+
|
|
42
|
+
**Steps**:
|
|
43
|
+
|
|
44
|
+
1. [Action 1]
|
|
45
|
+
2. [Action 2]
|
|
46
|
+
|
|
47
|
+
**Expected**:
|
|
48
|
+
|
|
49
|
+
- [Expected outcome 1]
|
|
50
|
+
- [Expected outcome 2]
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Test Suite [N+1]: [Suite Name]
|
|
55
|
+
|
|
56
|
+
[Brief description of what this test suite covers]
|
|
57
|
+
|
|
58
|
+
### Test [N+1.1]: [Test name] [✅/⏭️/❌]
|
|
59
|
+
|
|
60
|
+
**Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
|
|
61
|
+
**Description**: [What this test verifies]
|
|
62
|
+
|
|
63
|
+
**Steps**:
|
|
64
|
+
|
|
65
|
+
1. [Action 1]
|
|
66
|
+
2. [Action 2]
|
|
67
|
+
|
|
68
|
+
**Expected**:
|
|
69
|
+
|
|
70
|
+
- [Expected outcome 1]
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Test Suite [N]: Technical Constraints
|
|
75
|
+
|
|
76
|
+
_Tests for non-functional requirements from user story Technical Constraints section. Add tests for each applicable category: Performance, Security, Compatibility, Data, Dependencies, Infrastructure. Delete this suite if no constraints apply._
|
|
77
|
+
|
|
78
|
+
### Test [N.1]: [Constraint name] [✅/⏭️/❌]
|
|
79
|
+
|
|
80
|
+
**Status**: [✅ Passing / ⏭️ Skipped / ❌ Not Implemented / 🔴 Failing]
|
|
81
|
+
**Category**: [Performance / Security / Compatibility / Data / Dependencies / Infrastructure]
|
|
82
|
+
**Constraint**: [Copy exact constraint from user story, e.g., "API response < 200ms at P95"]
|
|
83
|
+
|
|
84
|
+
**Steps**:
|
|
85
|
+
|
|
86
|
+
1. [Setup test conditions]
|
|
87
|
+
2. [Execute operation]
|
|
88
|
+
3. [Measure/verify result]
|
|
89
|
+
|
|
90
|
+
**Expected**:
|
|
91
|
+
|
|
92
|
+
- [Measurable outcome matching constraint]
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Summary
|
|
97
|
+
|
|
98
|
+
**Total**: [N] tests
|
|
99
|
+
**Passing**: [X] tests ([X]%)
|
|
100
|
+
**Skipped**: [Y] tests ([Y]%)
|
|
101
|
+
**Not Implemented**: [Z] tests ([Z]%)
|
|
102
|
+
**Failing**: [F] tests ([F]%)
|
|
103
|
+
|
|
104
|
+
### Coverage by Feature
|
|
105
|
+
|
|
106
|
+
| Feature | Tests | Status |
|
|
107
|
+
| ----------- | ------- | ------------ |
|
|
108
|
+
| [Feature 1] | [X]/[N] | [✅/❌] [X]% |
|
|
109
|
+
| [Feature 2] | [X]/[N] | [✅/❌] [X]% |
|
|
110
|
+
| [Feature 3] | [X]/[N] | [✅/❌] [X]% |
|
|
111
|
+
|
|
112
|
+
### Skipped Tests Rationale
|
|
113
|
+
|
|
114
|
+
1. **Test [N.X]** ([Test name]): [Reason for skipping - e.g., conflicts with design decision, requires manual testing, etc.]
|
|
115
|
+
2. **Test [N.Y]** ([Test name]): [Reason for skipping]
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Test Execution
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Run all tests for this feature
|
|
123
|
+
[command to run all tests]
|
|
124
|
+
|
|
125
|
+
# Run specific test
|
|
126
|
+
[command to run specific test with --grep flag]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
**Last Updated**: [YYYY-MM-DD]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# User Stories: [Feature Name] (Issue #[number])
|
|
2
|
+
|
|
3
|
+
**Guide**: `@./.safeword/guides/user-story-guide.md` - Best practices, INVEST criteria, and examples
|
|
4
|
+
**Template**: `@./.safeword/templates/user-stories-template.md`
|
|
5
|
+
|
|
6
|
+
**Feature**: [Brief description of the feature]
|
|
7
|
+
|
|
8
|
+
**Related Issue**: #[number]
|
|
9
|
+
**Status**: [🚧 In Progress / ✅ Complete / ❌ Not Started] ([X/Y] stories complete)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Technical Constraints
|
|
14
|
+
|
|
15
|
+
_Non-functional requirements that inform test definitions. Delete sections that don't apply._
|
|
16
|
+
|
|
17
|
+
### Performance
|
|
18
|
+
|
|
19
|
+
- [ ] [e.g., Response time < 200ms at P95]
|
|
20
|
+
|
|
21
|
+
### Security
|
|
22
|
+
|
|
23
|
+
- [ ] [e.g., All inputs validated/sanitized]
|
|
24
|
+
|
|
25
|
+
### Compatibility
|
|
26
|
+
|
|
27
|
+
- [ ] [e.g., Chrome 100+, Safari 16+]
|
|
28
|
+
|
|
29
|
+
### Data
|
|
30
|
+
|
|
31
|
+
- [ ] [e.g., GDPR: user data deletable within 72h]
|
|
32
|
+
|
|
33
|
+
### Dependencies
|
|
34
|
+
|
|
35
|
+
- [ ] [e.g., Must use existing AuthService]
|
|
36
|
+
|
|
37
|
+
### Infrastructure
|
|
38
|
+
|
|
39
|
+
- [ ] [e.g., Memory usage < 512MB]
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Story [N]: [Story Title]
|
|
44
|
+
|
|
45
|
+
**As a** [role]
|
|
46
|
+
**I want to** [capability]
|
|
47
|
+
**So that** [value]
|
|
48
|
+
|
|
49
|
+
**Acceptance Criteria**:
|
|
50
|
+
|
|
51
|
+
- [✅/❌] [criterion 1]
|
|
52
|
+
- [✅/❌] [criterion 2]
|
|
53
|
+
- [✅/❌] [criterion 3]
|
|
54
|
+
|
|
55
|
+
**Implementation Status**: [✅ Complete / 🚧 In Progress / ❌ Not Started]
|
|
56
|
+
**Tests**: [test file path and line numbers]
|
|
57
|
+
|
|
58
|
+
**Notes**: [Optional: design decisions, scope clarifications, or open questions]
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Story [N+1]: [Story Title]
|
|
63
|
+
|
|
64
|
+
**As a** [role]
|
|
65
|
+
**I want to** [capability]
|
|
66
|
+
**So that** [value]
|
|
67
|
+
|
|
68
|
+
**Acceptance Criteria**:
|
|
69
|
+
|
|
70
|
+
- [✅/❌] [criterion 1]
|
|
71
|
+
- [✅/❌] [criterion 2]
|
|
72
|
+
|
|
73
|
+
**Implementation Status**: [✅ Complete / 🚧 In Progress / ❌ Not Started]
|
|
74
|
+
**Tests**: [test file path]
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Summary
|
|
79
|
+
|
|
80
|
+
**Completed**: [N]/[M] stories ([X]%)
|
|
81
|
+
**Remaining**: [N]/[M] stories ([X]%)
|
|
82
|
+
|
|
83
|
+
### [Phase Name]: [Description] [✅/❌]
|
|
84
|
+
|
|
85
|
+
- Story N: [Description]
|
|
86
|
+
- Story N+1: [Description]
|
|
87
|
+
|
|
88
|
+
### [Phase Name]: [Description] [✅/❌]
|
|
89
|
+
|
|
90
|
+
- Story N+2: [Description]
|
|
91
|
+
|
|
92
|
+
**Next Steps**: [What needs to be done next to complete the feature]
|