@sniper.ai/core 1.0.0 → 2.0.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/README.md +122 -32
- package/framework/checklists/debug-review.md +34 -0
- package/framework/checklists/feature-review.md +42 -0
- package/framework/checklists/ingest-review.md +42 -0
- package/framework/checklists/memory-review.md +30 -0
- package/framework/checklists/perf-review.md +33 -0
- package/framework/checklists/refactor-review.md +33 -0
- package/framework/checklists/security-review.md +34 -0
- package/framework/checklists/test-review.md +32 -0
- package/framework/checklists/workspace-review.md +34 -0
- package/framework/commands/sniper-audit.md +1549 -0
- package/framework/commands/sniper-compose.md +88 -2
- package/framework/commands/sniper-debug.md +337 -0
- package/framework/commands/sniper-discover.md +41 -15
- package/framework/commands/sniper-feature.md +515 -0
- package/framework/commands/sniper-ingest.md +506 -0
- package/framework/commands/sniper-init.md +21 -5
- package/framework/commands/sniper-memory.md +219 -0
- package/framework/commands/sniper-plan.md +41 -19
- package/framework/commands/sniper-review.md +106 -42
- package/framework/commands/sniper-solve.md +47 -14
- package/framework/commands/sniper-sprint.md +132 -17
- package/framework/commands/sniper-status.md +240 -35
- package/framework/commands/sniper-workspace-feature.md +267 -0
- package/framework/commands/sniper-workspace-init.md +252 -0
- package/framework/commands/sniper-workspace-status.md +112 -0
- package/framework/commands/sniper-workspace-validate.md +138 -0
- package/framework/config.template.yaml +88 -9
- package/framework/personas/process/architecture-cartographer.md +25 -0
- package/framework/personas/process/code-archaeologist.md +22 -0
- package/framework/personas/process/code-investigator.md +29 -0
- package/framework/personas/process/code-reviewer.md +26 -0
- package/framework/personas/process/contract-designer.md +31 -0
- package/framework/personas/process/convention-miner.md +27 -0
- package/framework/personas/process/coverage-analyst.md +24 -0
- package/framework/personas/process/flake-hunter.md +30 -0
- package/framework/personas/process/impact-analyst.md +23 -0
- package/framework/personas/process/integration-validator.md +29 -0
- package/framework/personas/process/log-analyst.md +22 -0
- package/framework/personas/process/migration-architect.md +24 -0
- package/framework/personas/process/perf-profiler.md +27 -0
- package/framework/personas/process/release-manager.md +23 -0
- package/framework/personas/process/retro-analyst.md +30 -0
- package/framework/personas/process/threat-modeler.md +30 -0
- package/framework/personas/process/triage-lead.md +23 -0
- package/framework/personas/process/vuln-scanner.md +27 -0
- package/framework/personas/process/workspace-orchestrator.md +30 -0
- package/framework/spawn-prompts/_template.md +3 -0
- package/framework/teams/debug.yaml +56 -0
- package/framework/teams/feature-plan.yaml +61 -0
- package/framework/teams/ingest.yaml +85 -0
- package/framework/teams/perf.yaml +33 -0
- package/framework/teams/refactor.yaml +34 -0
- package/framework/teams/retro.yaml +30 -0
- package/framework/teams/review-pr.yaml +73 -0
- package/framework/teams/review-release.yaml +70 -0
- package/framework/teams/security.yaml +59 -0
- package/framework/teams/test.yaml +59 -0
- package/framework/teams/workspace-feature.yaml +69 -0
- package/framework/teams/workspace-validation.yaml +27 -0
- package/framework/templates/arch-delta.md +74 -0
- package/framework/templates/architecture.md +24 -1
- package/framework/templates/brief.md +22 -1
- package/framework/templates/bug-report.md +55 -0
- package/framework/templates/contract-validation-report.md +68 -0
- package/framework/templates/contract.yaml +60 -0
- package/framework/templates/conventions.md +59 -0
- package/framework/templates/coverage-report.md +67 -0
- package/framework/templates/epic.md +14 -0
- package/framework/templates/feature-brief.md +54 -0
- package/framework/templates/feature-spec.md +53 -0
- package/framework/templates/flaky-report.md +64 -0
- package/framework/templates/investigation.md +49 -0
- package/framework/templates/memory-anti-pattern.yaml +16 -0
- package/framework/templates/memory-convention.yaml +17 -0
- package/framework/templates/memory-decision.yaml +16 -0
- package/framework/templates/migration-plan.md +47 -0
- package/framework/templates/optimization-plan.md +59 -0
- package/framework/templates/performance-profile.md +64 -0
- package/framework/templates/postmortem.md +69 -0
- package/framework/templates/pr-review.md +50 -0
- package/framework/templates/prd.md +24 -1
- package/framework/templates/refactor-scope.md +52 -0
- package/framework/templates/release-readiness.md +66 -0
- package/framework/templates/retro.yaml +44 -0
- package/framework/templates/security.md +22 -1
- package/framework/templates/story.md +16 -0
- package/framework/templates/threat-model.md +71 -0
- package/framework/templates/ux-spec.md +18 -1
- package/framework/templates/vulnerability-report.md +56 -0
- package/framework/templates/workspace-brief.md +52 -0
- package/framework/templates/workspace-plan.md +50 -0
- package/framework/workflows/workspace-feature.md +71 -0
- package/package.json +2 -2
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
# Product Requirements Document: {project_name}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
3
4
|
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
4
6
|
> **Author:** Planning Team — Product Manager
|
|
5
|
-
> **Date:** {date}
|
|
6
7
|
> **Source:** `docs/brief.md`, `docs/personas.md`, `docs/risks.md`
|
|
8
|
+
> **Change Log:**
|
|
9
|
+
> - v1 ({date}): Initial version
|
|
7
10
|
|
|
8
11
|
## 1. Problem Statement
|
|
12
|
+
<!-- sniper:managed:problem-statement:start -->
|
|
9
13
|
<!-- Specific problem, who has it, evidence it's real, current alternatives -->
|
|
14
|
+
<!-- sniper:managed:problem-statement:end -->
|
|
10
15
|
|
|
11
16
|
## 2. Solution Overview
|
|
17
|
+
<!-- sniper:managed:solution-overview:start -->
|
|
12
18
|
<!-- High-level description of the product solution -->
|
|
19
|
+
<!-- sniper:managed:solution-overview:end -->
|
|
13
20
|
|
|
14
21
|
## 3. User Stories
|
|
15
22
|
|
|
23
|
+
<!-- sniper:managed:user-stories:start -->
|
|
16
24
|
### P0 — Critical (Must Ship)
|
|
17
25
|
| ID | As a... | I want to... | So that... | Acceptance Criteria |
|
|
18
26
|
|----|---------|-------------|-----------|-------------------|
|
|
@@ -27,15 +35,19 @@
|
|
|
27
35
|
| ID | As a... | I want to... | So that... | Acceptance Criteria |
|
|
28
36
|
|----|---------|-------------|-----------|-------------------|
|
|
29
37
|
| US-020 | | | | |
|
|
38
|
+
<!-- sniper:managed:user-stories:end -->
|
|
30
39
|
|
|
31
40
|
## 4. Functional Requirements
|
|
41
|
+
<!-- sniper:managed:functional-requirements:start -->
|
|
32
42
|
<!-- Detailed functional requirements organized by feature area -->
|
|
33
43
|
|
|
34
44
|
### 4.1 {Feature Area 1}
|
|
35
45
|
- FR-001:
|
|
36
46
|
- FR-002:
|
|
47
|
+
<!-- sniper:managed:functional-requirements:end -->
|
|
37
48
|
|
|
38
49
|
## 5. Non-Functional Requirements
|
|
50
|
+
<!-- sniper:managed:non-functional-requirements:start -->
|
|
39
51
|
| Category | Requirement | Target |
|
|
40
52
|
|----------|------------|--------|
|
|
41
53
|
| Performance | | |
|
|
@@ -43,27 +55,38 @@
|
|
|
43
55
|
| Scalability | | |
|
|
44
56
|
| Availability | | |
|
|
45
57
|
| Accessibility | | |
|
|
58
|
+
<!-- sniper:managed:non-functional-requirements:end -->
|
|
46
59
|
|
|
47
60
|
## 6. Success Metrics
|
|
61
|
+
<!-- sniper:managed:success-metrics:start -->
|
|
48
62
|
| Metric | Target | Measurement Method |
|
|
49
63
|
|--------|--------|-------------------|
|
|
50
64
|
| | | |
|
|
65
|
+
<!-- sniper:managed:success-metrics:end -->
|
|
51
66
|
|
|
52
67
|
## 7. Scope Boundaries
|
|
53
68
|
|
|
69
|
+
<!-- sniper:managed:scope:start -->
|
|
54
70
|
### In Scope (v1)
|
|
55
71
|
-
|
|
56
72
|
|
|
57
73
|
### Explicitly Out of Scope
|
|
58
74
|
-
|
|
75
|
+
<!-- sniper:managed:scope:end -->
|
|
59
76
|
|
|
60
77
|
## 8. Dependencies & Integrations
|
|
78
|
+
<!-- sniper:managed:dependencies:start -->
|
|
61
79
|
<!-- External services, APIs, third-party tools required -->
|
|
80
|
+
<!-- sniper:managed:dependencies:end -->
|
|
62
81
|
|
|
63
82
|
## 9. Constraints
|
|
83
|
+
<!-- sniper:managed:constraints:start -->
|
|
64
84
|
<!-- Technical, business, regulatory, timeline constraints -->
|
|
85
|
+
<!-- sniper:managed:constraints:end -->
|
|
65
86
|
|
|
66
87
|
## 10. Risks & Mitigations
|
|
88
|
+
<!-- sniper:managed:risks:start -->
|
|
67
89
|
| Risk | Likelihood | Impact | Mitigation |
|
|
68
90
|
|------|-----------|--------|------------|
|
|
69
91
|
| | | | |
|
|
92
|
+
<!-- sniper:managed:risks:end -->
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Refactor Scope: {title}
|
|
2
|
+
|
|
3
|
+
> **Refactor ID:** REF-{NNN}
|
|
4
|
+
> **Status:** Scoping
|
|
5
|
+
> **Date:** {date}
|
|
6
|
+
> **Author:** Impact Analyst
|
|
7
|
+
|
|
8
|
+
## Refactor Summary
|
|
9
|
+
<!-- sniper:managed:summary:start -->
|
|
10
|
+
<!-- What is being changed and why -->
|
|
11
|
+
<!-- sniper:managed:summary:end -->
|
|
12
|
+
|
|
13
|
+
## Blast Radius
|
|
14
|
+
<!-- sniper:managed:blast-radius:start -->
|
|
15
|
+
|
|
16
|
+
### Files Affected
|
|
17
|
+
| Directory | File Count | Impact Level | Notes |
|
|
18
|
+
|-----------|-----------|-------------|-------|
|
|
19
|
+
| | | High / Medium / Low | |
|
|
20
|
+
|
|
21
|
+
### Total: {N} files, {N} instances of the pattern
|
|
22
|
+
|
|
23
|
+
<!-- sniper:managed:blast-radius:end -->
|
|
24
|
+
|
|
25
|
+
## Pattern Inventory
|
|
26
|
+
<!-- sniper:managed:pattern-inventory:start -->
|
|
27
|
+
<!-- Count of each pattern instance that needs migration -->
|
|
28
|
+
|
|
29
|
+
| Pattern | Count | Files | Example |
|
|
30
|
+
|---------|-------|-------|---------|
|
|
31
|
+
| | | | `path/to/file.ts:42` |
|
|
32
|
+
|
|
33
|
+
<!-- sniper:managed:pattern-inventory:end -->
|
|
34
|
+
|
|
35
|
+
## Risk Assessment
|
|
36
|
+
<!-- sniper:managed:risks:start -->
|
|
37
|
+
|
|
38
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
39
|
+
|------|-----------|--------|------------|
|
|
40
|
+
| | High/Medium/Low | High/Medium/Low | |
|
|
41
|
+
|
|
42
|
+
<!-- sniper:managed:risks:end -->
|
|
43
|
+
|
|
44
|
+
## Compatibility Concerns
|
|
45
|
+
<!-- sniper:managed:compatibility:start -->
|
|
46
|
+
<!-- API consumers, downstream dependencies, database migrations -->
|
|
47
|
+
<!-- sniper:managed:compatibility:end -->
|
|
48
|
+
|
|
49
|
+
## Estimated Effort
|
|
50
|
+
<!-- sniper:managed:effort:start -->
|
|
51
|
+
<!-- S/M/L/XL with justification based on file count and complexity -->
|
|
52
|
+
<!-- sniper:managed:effort:end -->
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Release Readiness: {version}
|
|
2
|
+
|
|
3
|
+
> **Date:** {date}
|
|
4
|
+
> **Previous Release:** {previous_version}
|
|
5
|
+
> **Recommendation:** {ready / not-ready}
|
|
6
|
+
> **Version Bump:** {major / minor / patch}
|
|
7
|
+
|
|
8
|
+
## Version Recommendation
|
|
9
|
+
<!-- sniper:managed:version:start -->
|
|
10
|
+
<!-- Recommended version bump with justification -->
|
|
11
|
+
<!-- sniper:managed:version:end -->
|
|
12
|
+
|
|
13
|
+
## Changelog
|
|
14
|
+
<!-- sniper:managed:changelog:start -->
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
### Breaking Changes
|
|
23
|
+
-
|
|
24
|
+
|
|
25
|
+
### Internal / Refactoring
|
|
26
|
+
-
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
-
|
|
30
|
+
|
|
31
|
+
<!-- sniper:managed:changelog:end -->
|
|
32
|
+
|
|
33
|
+
## Breaking Changes
|
|
34
|
+
<!-- sniper:managed:breaking-changes:start -->
|
|
35
|
+
|
|
36
|
+
| Change | Affected | Migration Required |
|
|
37
|
+
|--------|----------|-------------------|
|
|
38
|
+
| | APIs / Schema / Config / Behavior | Yes / No |
|
|
39
|
+
|
|
40
|
+
<!-- sniper:managed:breaking-changes:end -->
|
|
41
|
+
|
|
42
|
+
## Migration Guide
|
|
43
|
+
<!-- sniper:managed:migration-guide:start -->
|
|
44
|
+
<!-- Steps users need to take to upgrade (if breaking changes exist) -->
|
|
45
|
+
<!-- sniper:managed:migration-guide:end -->
|
|
46
|
+
|
|
47
|
+
## Documentation Status
|
|
48
|
+
<!-- sniper:managed:doc-status:start -->
|
|
49
|
+
|
|
50
|
+
| Document | Status | Action Needed |
|
|
51
|
+
|----------|--------|---------------|
|
|
52
|
+
| | Up to date / Outdated / Missing | |
|
|
53
|
+
|
|
54
|
+
<!-- sniper:managed:doc-status:end -->
|
|
55
|
+
|
|
56
|
+
## Release Checklist
|
|
57
|
+
<!-- sniper:managed:release-checklist:start -->
|
|
58
|
+
|
|
59
|
+
- [ ] All tests passing
|
|
60
|
+
- [ ] Breaking changes documented
|
|
61
|
+
- [ ] Migration guide written (if applicable)
|
|
62
|
+
- [ ] Changelog reviewed
|
|
63
|
+
- [ ] Documentation updated
|
|
64
|
+
- [ ] Version bumped in package files
|
|
65
|
+
|
|
66
|
+
<!-- sniper:managed:release-checklist:end -->
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Sprint Retrospective Template
|
|
2
|
+
# Produced by: retro-analyst
|
|
3
|
+
# Input: completed sprint stories, review gate results, code changes
|
|
4
|
+
|
|
5
|
+
sprint: 0
|
|
6
|
+
date: ""
|
|
7
|
+
stories_completed: 0
|
|
8
|
+
stories_carried_over: 0
|
|
9
|
+
|
|
10
|
+
findings:
|
|
11
|
+
new_conventions:
|
|
12
|
+
# - rule: "Description of the convention"
|
|
13
|
+
# confidence: high | medium
|
|
14
|
+
# evidence: "Which stories demonstrated this pattern"
|
|
15
|
+
# recommendation: codify | monitor | ignore
|
|
16
|
+
# applies_to: [role-1, role-2]
|
|
17
|
+
[]
|
|
18
|
+
|
|
19
|
+
new_anti_patterns:
|
|
20
|
+
# - description: "Description of the anti-pattern"
|
|
21
|
+
# occurrences: 0
|
|
22
|
+
# stories: ["STORY-XXX"]
|
|
23
|
+
# recommendation: codify | monitor | ignore
|
|
24
|
+
# severity: high | medium | low
|
|
25
|
+
# applies_to: [role-1, role-2]
|
|
26
|
+
[]
|
|
27
|
+
|
|
28
|
+
review_gate_failures:
|
|
29
|
+
# - check: "Name of the check that failed"
|
|
30
|
+
# failures: 0
|
|
31
|
+
# pattern: "Common thread across failures"
|
|
32
|
+
# already_tracked: false
|
|
33
|
+
[]
|
|
34
|
+
|
|
35
|
+
estimation_calibration:
|
|
36
|
+
overestimates: []
|
|
37
|
+
underestimates: []
|
|
38
|
+
patterns:
|
|
39
|
+
# - "Description of estimation pattern"
|
|
40
|
+
[]
|
|
41
|
+
|
|
42
|
+
positive_patterns:
|
|
43
|
+
# - "Description of a positive pattern worth reinforcing"
|
|
44
|
+
[]
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
# Security Assessment: {project_name}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
3
4
|
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
4
6
|
> **Author:** Planning Team — Security Analyst
|
|
5
|
-
> **
|
|
7
|
+
> **Change Log:**
|
|
8
|
+
> - v1 ({date}): Initial version
|
|
6
9
|
|
|
7
10
|
## Security Overview
|
|
11
|
+
<!-- sniper:managed:overview:start -->
|
|
8
12
|
<!-- 2-3 sentence summary of the project's security posture and key concerns -->
|
|
13
|
+
<!-- sniper:managed:overview:end -->
|
|
9
14
|
|
|
10
15
|
## Authentication & Authorization
|
|
11
16
|
|
|
17
|
+
<!-- sniper:managed:auth:start -->
|
|
12
18
|
### Authentication Model
|
|
13
19
|
<!-- OAuth 2.0 / JWT / Session-based / API Keys / Multi-factor -->
|
|
14
20
|
|
|
@@ -17,9 +23,11 @@
|
|
|
17
23
|
|
|
18
24
|
### Session Management
|
|
19
25
|
<!-- Token lifecycle, refresh strategy, revocation, concurrent sessions -->
|
|
26
|
+
<!-- sniper:managed:auth:end -->
|
|
20
27
|
|
|
21
28
|
## Data Security
|
|
22
29
|
|
|
30
|
+
<!-- sniper:managed:data-security:start -->
|
|
23
31
|
### Data Classification
|
|
24
32
|
| Data Type | Classification | Storage | Encryption | Retention |
|
|
25
33
|
|-----------|---------------|---------|------------|-----------|
|
|
@@ -32,9 +40,11 @@
|
|
|
32
40
|
|
|
33
41
|
### PII Handling
|
|
34
42
|
<!-- What PII is collected, how it's stored, who can access it, deletion policy -->
|
|
43
|
+
<!-- sniper:managed:data-security:end -->
|
|
35
44
|
|
|
36
45
|
## API Security
|
|
37
46
|
|
|
47
|
+
<!-- sniper:managed:api-security:start -->
|
|
38
48
|
### Input Validation
|
|
39
49
|
<!-- Validation strategy, sanitization, schema enforcement -->
|
|
40
50
|
|
|
@@ -54,9 +64,11 @@
|
|
|
54
64
|
| Insecure Deserialization | | |
|
|
55
65
|
| Known Vulnerabilities | | |
|
|
56
66
|
| Insufficient Logging | | |
|
|
67
|
+
<!-- sniper:managed:api-security:end -->
|
|
57
68
|
|
|
58
69
|
## Infrastructure Security
|
|
59
70
|
|
|
71
|
+
<!-- sniper:managed:infra-security:start -->
|
|
60
72
|
### Network Architecture
|
|
61
73
|
<!-- VPC, subnets, security groups, WAF, CDN -->
|
|
62
74
|
|
|
@@ -65,12 +77,16 @@
|
|
|
65
77
|
|
|
66
78
|
### Logging & Monitoring
|
|
67
79
|
<!-- Security event logging, alerting, SIEM integration -->
|
|
80
|
+
<!-- sniper:managed:infra-security:end -->
|
|
68
81
|
|
|
69
82
|
## Compliance Requirements
|
|
83
|
+
<!-- sniper:managed:compliance:start -->
|
|
70
84
|
<!-- Applicable frameworks: SOC 2, GDPR, HIPAA, PCI-DSS, etc. -->
|
|
85
|
+
<!-- sniper:managed:compliance:end -->
|
|
71
86
|
|
|
72
87
|
## Threat Model
|
|
73
88
|
|
|
89
|
+
<!-- sniper:managed:threat-model:start -->
|
|
74
90
|
### Attack Surface
|
|
75
91
|
<!-- Entry points, trust boundaries, data flows -->
|
|
76
92
|
|
|
@@ -78,13 +94,18 @@
|
|
|
78
94
|
| Threat | Likelihood | Impact | Mitigation |
|
|
79
95
|
|--------|-----------|--------|------------|
|
|
80
96
|
| | | | |
|
|
97
|
+
<!-- sniper:managed:threat-model:end -->
|
|
81
98
|
|
|
82
99
|
## Recommendations
|
|
100
|
+
<!-- sniper:managed:recommendations:start -->
|
|
83
101
|
<!-- Prioritized security recommendations for implementation -->
|
|
84
102
|
1.
|
|
85
103
|
2.
|
|
86
104
|
3.
|
|
105
|
+
<!-- sniper:managed:recommendations:end -->
|
|
87
106
|
|
|
88
107
|
## Open Questions
|
|
108
|
+
<!-- sniper:managed:open-questions:start -->
|
|
89
109
|
1.
|
|
90
110
|
2.
|
|
111
|
+
<!-- sniper:managed:open-questions:end -->
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
# Story {epic}.{number}: {title}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
4
|
+
> **Last Updated:** {date}
|
|
3
5
|
> **Epic:** {epic title} (`docs/epics/{epic}.md`)
|
|
4
6
|
> **Complexity:** S | M | L | XL
|
|
5
7
|
> **Priority:** P{0|1|2}
|
|
6
8
|
> **File Ownership:** {directories this story touches}
|
|
7
9
|
> **Dependencies:** {story dependencies or "None"}
|
|
10
|
+
> **Change Log:**
|
|
11
|
+
> - v1 ({date}): Initial version
|
|
8
12
|
|
|
9
13
|
## Description
|
|
14
|
+
<!-- sniper:managed:description:start -->
|
|
10
15
|
<!-- What this story implements, in user-facing terms -->
|
|
16
|
+
<!-- sniper:managed:description:end -->
|
|
11
17
|
|
|
12
18
|
## Embedded Context
|
|
13
19
|
|
|
20
|
+
<!-- sniper:managed:embedded-context:start -->
|
|
14
21
|
### From PRD
|
|
15
22
|
<!-- COPY the relevant requirements and user stories from docs/prd.md -->
|
|
16
23
|
|
|
@@ -19,19 +26,28 @@
|
|
|
19
26
|
|
|
20
27
|
### From UX Spec
|
|
21
28
|
<!-- COPY relevant screen descriptions, user flows, component specs (if frontend story) -->
|
|
29
|
+
<!-- sniper:managed:embedded-context:end -->
|
|
22
30
|
|
|
23
31
|
## Acceptance Criteria
|
|
32
|
+
<!-- sniper:managed:acceptance-criteria:start -->
|
|
24
33
|
<!-- Testable assertions in Given/When/Then format -->
|
|
25
34
|
1. **Given** ... **When** ... **Then** ...
|
|
26
35
|
2. **Given** ... **When** ... **Then** ...
|
|
36
|
+
<!-- sniper:managed:acceptance-criteria:end -->
|
|
27
37
|
|
|
28
38
|
## Test Requirements
|
|
39
|
+
<!-- sniper:managed:test-requirements:start -->
|
|
29
40
|
- [ ] Unit tests:
|
|
30
41
|
- [ ] Integration tests:
|
|
31
42
|
- [ ] E2E tests (if applicable):
|
|
43
|
+
<!-- sniper:managed:test-requirements:end -->
|
|
32
44
|
|
|
33
45
|
## Implementation Notes
|
|
46
|
+
<!-- sniper:managed:implementation-notes:start -->
|
|
34
47
|
<!-- Specific patterns, libraries, or approaches to use -->
|
|
48
|
+
<!-- sniper:managed:implementation-notes:end -->
|
|
35
49
|
|
|
36
50
|
## Out of Scope
|
|
51
|
+
<!-- sniper:managed:out-of-scope:start -->
|
|
37
52
|
<!-- What this story does NOT include, to prevent scope creep -->
|
|
53
|
+
<!-- sniper:managed:out-of-scope:end -->
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Threat Model: {title}
|
|
2
|
+
|
|
3
|
+
> **Audit ID:** SEC-{NNN}
|
|
4
|
+
> **Status:** Analyzing
|
|
5
|
+
> **Date:** {date}
|
|
6
|
+
> **Author:** Threat Modeler
|
|
7
|
+
|
|
8
|
+
## Attack Surface Map
|
|
9
|
+
<!-- sniper:managed:attack-surface:start -->
|
|
10
|
+
<!-- All entry points with authentication requirements -->
|
|
11
|
+
|
|
12
|
+
| Entry Point | Type | Auth Required | Auth Method | Notes |
|
|
13
|
+
|------------|------|--------------|-------------|-------|
|
|
14
|
+
| | API / Webhook / Upload / Admin / WebSocket | Yes/No | JWT/Session/API Key/None | |
|
|
15
|
+
|
|
16
|
+
<!-- sniper:managed:attack-surface:end -->
|
|
17
|
+
|
|
18
|
+
## Trust Boundaries
|
|
19
|
+
<!-- sniper:managed:trust-boundaries:start -->
|
|
20
|
+
<!-- Where authenticated/unauthenticated, internal/external, user/admin boundaries exist -->
|
|
21
|
+
|
|
22
|
+
### Boundary: {name}
|
|
23
|
+
- **Separates:** {trusted side} ↔ {untrusted side}
|
|
24
|
+
- **Enforced by:** {mechanism — middleware, firewall, etc.}
|
|
25
|
+
- **Data crossing:** {what data crosses this boundary}
|
|
26
|
+
|
|
27
|
+
<!-- sniper:managed:trust-boundaries:end -->
|
|
28
|
+
|
|
29
|
+
## Data Classification
|
|
30
|
+
<!-- sniper:managed:data-classification:start -->
|
|
31
|
+
|
|
32
|
+
| Data Type | Classification | Stored In | Encrypted at Rest | Encrypted in Transit | Retention |
|
|
33
|
+
|-----------|---------------|-----------|-------------------|---------------------|-----------|
|
|
34
|
+
| | PII / Credentials / Financial / Internal | | Yes/No | Yes/No | |
|
|
35
|
+
|
|
36
|
+
<!-- sniper:managed:data-classification:end -->
|
|
37
|
+
|
|
38
|
+
## Threat Inventory (STRIDE)
|
|
39
|
+
<!-- sniper:managed:threat-inventory:start -->
|
|
40
|
+
|
|
41
|
+
### {Component/Flow Name}
|
|
42
|
+
|
|
43
|
+
| Category | Threat | Likelihood | Impact | Risk | Mitigation |
|
|
44
|
+
|----------|--------|-----------|--------|------|------------|
|
|
45
|
+
| Spoofing | | H/M/L | H/M/L | | |
|
|
46
|
+
| Tampering | | H/M/L | H/M/L | | |
|
|
47
|
+
| Repudiation | | H/M/L | H/M/L | | |
|
|
48
|
+
| Info Disclosure | | H/M/L | H/M/L | | |
|
|
49
|
+
| Denial of Service | | H/M/L | H/M/L | | |
|
|
50
|
+
| Elevation of Privilege | | H/M/L | H/M/L | | |
|
|
51
|
+
|
|
52
|
+
<!-- sniper:managed:threat-inventory:end -->
|
|
53
|
+
|
|
54
|
+
## Dependency Risk
|
|
55
|
+
<!-- sniper:managed:dependency-risk:start -->
|
|
56
|
+
|
|
57
|
+
| Package | Version | Known CVEs | Maintained | Risk Level |
|
|
58
|
+
|---------|---------|------------|------------|------------|
|
|
59
|
+
| | | Yes/No | Yes/No | High/Medium/Low |
|
|
60
|
+
|
|
61
|
+
<!-- sniper:managed:dependency-risk:end -->
|
|
62
|
+
|
|
63
|
+
## Priority Threats
|
|
64
|
+
<!-- sniper:managed:priority-threats:start -->
|
|
65
|
+
<!-- Top 5 threats ranked by likelihood x impact -->
|
|
66
|
+
|
|
67
|
+
| Rank | Threat | Component | Likelihood x Impact | Recommended Action |
|
|
68
|
+
|------|--------|-----------|--------------------|--------------------|
|
|
69
|
+
| 1 | | | | |
|
|
70
|
+
|
|
71
|
+
<!-- sniper:managed:priority-threats:end -->
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
# UX Specification: {project_name}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
3
4
|
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
4
6
|
> **Author:** Planning Team — UX Designer
|
|
5
|
-
> **Date:** {date}
|
|
6
7
|
> **Source:** `docs/prd.md`, `docs/personas.md`
|
|
8
|
+
> **Change Log:**
|
|
9
|
+
> - v1 ({date}): Initial version
|
|
7
10
|
|
|
8
11
|
## 1. Information Architecture
|
|
12
|
+
<!-- sniper:managed:information-architecture:start -->
|
|
9
13
|
<!-- Page hierarchy and navigation structure -->
|
|
14
|
+
<!-- sniper:managed:information-architecture:end -->
|
|
10
15
|
|
|
11
16
|
## 2. Screen Inventory
|
|
17
|
+
<!-- sniper:managed:screen-inventory:start -->
|
|
12
18
|
| Screen | Purpose | User Stories | Key Components |
|
|
13
19
|
|--------|---------|-------------|----------------|
|
|
14
20
|
| | | | |
|
|
21
|
+
<!-- sniper:managed:screen-inventory:end -->
|
|
15
22
|
|
|
16
23
|
## 3. User Flows
|
|
17
24
|
|
|
25
|
+
<!-- sniper:managed:user-flows:start -->
|
|
18
26
|
### 3.1 {Flow Name}
|
|
19
27
|
<!-- Step-by-step with decision points, error paths -->
|
|
20
28
|
```
|
|
@@ -23,32 +31,41 @@ Step 1: User does X
|
|
|
23
31
|
→ Error: Show error message, stay on current screen
|
|
24
32
|
Step 2: ...
|
|
25
33
|
```
|
|
34
|
+
<!-- sniper:managed:user-flows:end -->
|
|
26
35
|
|
|
27
36
|
## 4. Component Hierarchy
|
|
37
|
+
<!-- sniper:managed:component-hierarchy:start -->
|
|
28
38
|
<!-- Reusable UI components and their variants -->
|
|
29
39
|
|
|
30
40
|
### 4.1 {Component Name}
|
|
31
41
|
- **States:** default, hover, active, disabled, loading, error
|
|
32
42
|
- **Props/Variants:**
|
|
33
43
|
- **Accessibility:**
|
|
44
|
+
<!-- sniper:managed:component-hierarchy:end -->
|
|
34
45
|
|
|
35
46
|
## 5. Interaction Patterns
|
|
47
|
+
<!-- sniper:managed:interaction-patterns:start -->
|
|
36
48
|
<!-- Loading states, transitions, empty states, error states -->
|
|
37
49
|
|
|
38
50
|
### Loading States
|
|
39
51
|
### Empty States
|
|
40
52
|
### Error States
|
|
41
53
|
### Confirmation Dialogs
|
|
54
|
+
<!-- sniper:managed:interaction-patterns:end -->
|
|
42
55
|
|
|
43
56
|
## 6. Responsive Strategy
|
|
57
|
+
<!-- sniper:managed:responsive:start -->
|
|
44
58
|
| Breakpoint | Width | Layout Changes |
|
|
45
59
|
|-----------|-------|---------------|
|
|
46
60
|
| Mobile | < 768px | |
|
|
47
61
|
| Tablet | 768-1024px | |
|
|
48
62
|
| Desktop | > 1024px | |
|
|
63
|
+
<!-- sniper:managed:responsive:end -->
|
|
49
64
|
|
|
50
65
|
## 7. Accessibility Requirements
|
|
66
|
+
<!-- sniper:managed:accessibility:start -->
|
|
51
67
|
- **WCAG Level:** AA
|
|
52
68
|
- **Keyboard Navigation:**
|
|
53
69
|
- **Screen Reader Support:**
|
|
54
70
|
- **Color Contrast:**
|
|
71
|
+
<!-- sniper:managed:accessibility:end -->
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Vulnerability Report: {title}
|
|
2
|
+
|
|
3
|
+
> **Audit ID:** SEC-{NNN}
|
|
4
|
+
> **Status:** Analyzing
|
|
5
|
+
> **Date:** {date}
|
|
6
|
+
> **Author:** Vulnerability Scanner
|
|
7
|
+
|
|
8
|
+
## Findings Summary
|
|
9
|
+
<!-- sniper:managed:findings-summary:start -->
|
|
10
|
+
|
|
11
|
+
| Severity | Count |
|
|
12
|
+
|----------|-------|
|
|
13
|
+
| Critical | |
|
|
14
|
+
| High | |
|
|
15
|
+
| Medium | |
|
|
16
|
+
| Low | |
|
|
17
|
+
| **Total** | |
|
|
18
|
+
|
|
19
|
+
<!-- sniper:managed:findings-summary:end -->
|
|
20
|
+
|
|
21
|
+
## Vulnerability Inventory
|
|
22
|
+
<!-- sniper:managed:vulnerabilities:start -->
|
|
23
|
+
|
|
24
|
+
### VULN-001: {title}
|
|
25
|
+
- **Severity:** Critical / High / Medium / Low
|
|
26
|
+
- **Category:** {OWASP Top 10 category, e.g., A01:2021 Broken Access Control}
|
|
27
|
+
- **Location:** `path/to/file.ts:42`
|
|
28
|
+
- **Description:** {what the vulnerability is}
|
|
29
|
+
- **Evidence:** {the specific code pattern that creates the vulnerability}
|
|
30
|
+
- **Impact:** {what an attacker could achieve by exploiting this}
|
|
31
|
+
- **Remediation:** {how to fix it}
|
|
32
|
+
```
|
|
33
|
+
// Example fix
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
<!-- sniper:managed:vulnerabilities:end -->
|
|
37
|
+
|
|
38
|
+
## Patterns of Concern
|
|
39
|
+
<!-- sniper:managed:patterns:start -->
|
|
40
|
+
<!-- Systemic issues that appear across multiple locations -->
|
|
41
|
+
|
|
42
|
+
### {Pattern Name}
|
|
43
|
+
- **Occurrences:** {count} locations
|
|
44
|
+
- **Description:** {what the pattern is and why it's concerning}
|
|
45
|
+
- **Locations:** {list of file:line references}
|
|
46
|
+
- **Systemic Fix:** {how to address this across the codebase}
|
|
47
|
+
|
|
48
|
+
<!-- sniper:managed:patterns:end -->
|
|
49
|
+
|
|
50
|
+
## Positive Findings
|
|
51
|
+
<!-- sniper:managed:positive:start -->
|
|
52
|
+
<!-- Security practices that are done well and should be maintained -->
|
|
53
|
+
|
|
54
|
+
- {Positive finding — e.g., "Consistent use of parameterized queries in `src/db/` layer"}
|
|
55
|
+
|
|
56
|
+
<!-- sniper:managed:positive:end -->
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Workspace Feature Brief: {feature_title}
|
|
2
|
+
|
|
3
|
+
> **ID:** WKSP-{XXXX}
|
|
4
|
+
> **Version:** 1
|
|
5
|
+
> **Status:** Draft
|
|
6
|
+
> **Last Updated:** {date}
|
|
7
|
+
> **Author:** Workspace Orchestrator
|
|
8
|
+
|
|
9
|
+
## Feature Description
|
|
10
|
+
<!-- sniper:managed:description:start -->
|
|
11
|
+
{One-paragraph description of the cross-repo feature}
|
|
12
|
+
<!-- sniper:managed:description:end -->
|
|
13
|
+
|
|
14
|
+
## Affected Repositories
|
|
15
|
+
<!-- sniper:managed:affected-repos:start -->
|
|
16
|
+
| Repository | Role | Why Affected | Work Scope |
|
|
17
|
+
|-----------|------|-------------|------------|
|
|
18
|
+
| | | | |
|
|
19
|
+
<!-- sniper:managed:affected-repos:end -->
|
|
20
|
+
|
|
21
|
+
## New Interfaces
|
|
22
|
+
<!-- sniper:managed:new-interfaces:start -->
|
|
23
|
+
| Interface | Type | Between | Description |
|
|
24
|
+
|-----------|------|---------|-------------|
|
|
25
|
+
| | REST API / Shared Type / Event | repo-a ↔ repo-b | |
|
|
26
|
+
<!-- sniper:managed:new-interfaces:end -->
|
|
27
|
+
|
|
28
|
+
## Modified Interfaces
|
|
29
|
+
<!-- sniper:managed:modified-interfaces:start -->
|
|
30
|
+
| Contract | Current Version | Change Description | Breaking? |
|
|
31
|
+
|----------|----------------|-------------------|-----------|
|
|
32
|
+
| | | | |
|
|
33
|
+
<!-- sniper:managed:modified-interfaces:end -->
|
|
34
|
+
|
|
35
|
+
## Dependency Ordering
|
|
36
|
+
<!-- sniper:managed:dependency-ordering:start -->
|
|
37
|
+
Based on the workspace dependency graph:
|
|
38
|
+
|
|
39
|
+
### Wave 1
|
|
40
|
+
- **{repo}** — {what it produces that others need}
|
|
41
|
+
|
|
42
|
+
### Wave 2
|
|
43
|
+
- **{repo}** — {depends on Wave 1 outputs}
|
|
44
|
+
|
|
45
|
+
### Wave 3
|
|
46
|
+
- **{repo}** — {depends on Wave 2 outputs}
|
|
47
|
+
<!-- sniper:managed:dependency-ordering:end -->
|
|
48
|
+
|
|
49
|
+
## Risks & Considerations
|
|
50
|
+
<!-- sniper:managed:risks:start -->
|
|
51
|
+
- {risk or consideration}
|
|
52
|
+
<!-- sniper:managed:risks:end -->
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Cross-Repo Implementation Plan: {feature_title}
|
|
2
|
+
|
|
3
|
+
> **Feature:** WKSP-{XXXX}
|
|
4
|
+
> **Version:** 1
|
|
5
|
+
> **Status:** Draft
|
|
6
|
+
> **Last Updated:** {date}
|
|
7
|
+
> **Author:** Workspace Orchestrator
|
|
8
|
+
> **Contracts:** {list of contract files}
|
|
9
|
+
|
|
10
|
+
## Per-Repo Work Breakdown
|
|
11
|
+
<!-- sniper:managed:repo-breakdown:start -->
|
|
12
|
+
|
|
13
|
+
### {repo-name} (Wave {N})
|
|
14
|
+
**Repo Feature ID:** SNPR-{XXXX}
|
|
15
|
+
**Stories:**
|
|
16
|
+
| Story | Description | Contract Refs |
|
|
17
|
+
|-------|-------------|---------------|
|
|
18
|
+
| | | |
|
|
19
|
+
|
|
20
|
+
**Dependencies from other repos:** {what this repo needs from previous waves}
|
|
21
|
+
**Produces for other repos:** {what this repo provides to subsequent waves}
|
|
22
|
+
|
|
23
|
+
<!-- sniper:managed:repo-breakdown:end -->
|
|
24
|
+
|
|
25
|
+
## Sprint Wave Ordering
|
|
26
|
+
<!-- sniper:managed:wave-ordering:start -->
|
|
27
|
+
| Wave | Repositories | Parallel? | Depends On |
|
|
28
|
+
|------|-------------|-----------|------------|
|
|
29
|
+
| 1 | | Yes | — |
|
|
30
|
+
| 2 | | | Wave 1 |
|
|
31
|
+
| 3 | | | Wave 2 |
|
|
32
|
+
<!-- sniper:managed:wave-ordering:end -->
|
|
33
|
+
|
|
34
|
+
## Integration Validation Criteria
|
|
35
|
+
<!-- sniper:managed:validation-criteria:start -->
|
|
36
|
+
### Between Wave 1 and Wave 2
|
|
37
|
+
- [ ] {contract item to validate}
|
|
38
|
+
|
|
39
|
+
### Between Wave 2 and Wave 3
|
|
40
|
+
- [ ] {contract item to validate}
|
|
41
|
+
|
|
42
|
+
### Final Integration
|
|
43
|
+
- [ ] {end-to-end check}
|
|
44
|
+
<!-- sniper:managed:validation-criteria:end -->
|
|
45
|
+
|
|
46
|
+
## Rollback Plan
|
|
47
|
+
<!-- sniper:managed:rollback:start -->
|
|
48
|
+
If integration validation fails at any wave boundary:
|
|
49
|
+
1. {step}
|
|
50
|
+
<!-- sniper:managed:rollback:end -->
|