vstack 0.0.0__py3-none-any.whl
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.
- vstack/__init__.py +5 -0
- vstack/__main__.py +5 -0
- vstack/_templates/agents/_partials/agent-skill-boundary.md +5 -0
- vstack/_templates/agents/architect/config.yaml +38 -0
- vstack/_templates/agents/architect/template.md +84 -0
- vstack/_templates/agents/designer/config.yaml +36 -0
- vstack/_templates/agents/designer/template.md +99 -0
- vstack/_templates/agents/engineer/config.yaml +36 -0
- vstack/_templates/agents/engineer/template.md +88 -0
- vstack/_templates/agents/product/config.yaml +37 -0
- vstack/_templates/agents/product/template.md +87 -0
- vstack/_templates/agents/release/config.yaml +35 -0
- vstack/_templates/agents/release/template.md +86 -0
- vstack/_templates/agents/tester/config.yaml +41 -0
- vstack/_templates/agents/tester/template.md +90 -0
- vstack/_templates/instructions/git/config.yaml +4 -0
- vstack/_templates/instructions/git/template.md +36 -0
- vstack/_templates/instructions/python/config.yaml +4 -0
- vstack/_templates/instructions/python/template.md +37 -0
- vstack/_templates/prompts/code-review/config.yaml +10 -0
- vstack/_templates/prompts/code-review/template.md +39 -0
- vstack/_templates/skills/_partials/base-branch.md +8 -0
- vstack/_templates/skills/_partials/observability-checklist.md +36 -0
- vstack/_templates/skills/_partials/run-tests.md +22 -0
- vstack/_templates/skills/_partials/skill-context.md +21 -0
- vstack/_templates/skills/adr/config.yaml +17 -0
- vstack/_templates/skills/adr/template.md +167 -0
- vstack/_templates/skills/analyse/config.yaml +16 -0
- vstack/_templates/skills/analyse/template.md +188 -0
- vstack/_templates/skills/architecture/config.yaml +18 -0
- vstack/_templates/skills/architecture/template.md +213 -0
- vstack/_templates/skills/cicd/config.yaml +16 -0
- vstack/_templates/skills/cicd/template.md +169 -0
- vstack/_templates/skills/code-review/config.yaml +16 -0
- vstack/_templates/skills/code-review/template.md +180 -0
- vstack/_templates/skills/concise/config.yaml +16 -0
- vstack/_templates/skills/concise/template.md +128 -0
- vstack/_templates/skills/consult/config.yaml +18 -0
- vstack/_templates/skills/consult/template.md +195 -0
- vstack/_templates/skills/container/config.yaml +17 -0
- vstack/_templates/skills/container/template.md +122 -0
- vstack/_templates/skills/debug/config.yaml +16 -0
- vstack/_templates/skills/debug/template.md +247 -0
- vstack/_templates/skills/dependency/config.yaml +18 -0
- vstack/_templates/skills/dependency/template.md +293 -0
- vstack/_templates/skills/design/config.yaml +16 -0
- vstack/_templates/skills/design/template.md +231 -0
- vstack/_templates/skills/docs/config.yaml +17 -0
- vstack/_templates/skills/docs/template.md +128 -0
- vstack/_templates/skills/explore/config.yaml +17 -0
- vstack/_templates/skills/explore/template.md +188 -0
- vstack/_templates/skills/guardrails/config.yaml +16 -0
- vstack/_templates/skills/guardrails/template.md +45 -0
- vstack/_templates/skills/incident/config.yaml +17 -0
- vstack/_templates/skills/incident/template.md +293 -0
- vstack/_templates/skills/inspect/config.yaml +16 -0
- vstack/_templates/skills/inspect/template.md +105 -0
- vstack/_templates/skills/migrate/config.yaml +17 -0
- vstack/_templates/skills/migrate/template.md +298 -0
- vstack/_templates/skills/onboard/config.yaml +18 -0
- vstack/_templates/skills/onboard/template.md +289 -0
- vstack/_templates/skills/openapi/config.yaml +17 -0
- vstack/_templates/skills/openapi/template.md +382 -0
- vstack/_templates/skills/performance/config.yaml +15 -0
- vstack/_templates/skills/performance/template.md +198 -0
- vstack/_templates/skills/pr/config.yaml +15 -0
- vstack/_templates/skills/pr/template.md +108 -0
- vstack/_templates/skills/refactor/config.yaml +18 -0
- vstack/_templates/skills/refactor/template.md +283 -0
- vstack/_templates/skills/release-notes/config.yaml +16 -0
- vstack/_templates/skills/release-notes/template.md +127 -0
- vstack/_templates/skills/requirements/config.yaml +17 -0
- vstack/_templates/skills/requirements/template.md +187 -0
- vstack/_templates/skills/security/config.yaml +17 -0
- vstack/_templates/skills/security/template.md +256 -0
- vstack/_templates/skills/verify/config.yaml +17 -0
- vstack/_templates/skills/verify/template.md +201 -0
- vstack/_templates/skills/vision/config.yaml +19 -0
- vstack/_templates/skills/vision/template.md +169 -0
- vstack/agents/__init__.py +5 -0
- vstack/agents/config.py +67 -0
- vstack/agents/constants.py +14 -0
- vstack/agents/generator.py +20 -0
- vstack/artifacts/__init__.py +17 -0
- vstack/artifacts/config.py +111 -0
- vstack/artifacts/constants.py +6 -0
- vstack/artifacts/generator.py +406 -0
- vstack/artifacts/models.py +55 -0
- vstack/artifacts/protocol.py +50 -0
- vstack/cli/__init__.py +3 -0
- vstack/cli/commands.py +596 -0
- vstack/cli/constants.py +33 -0
- vstack/cli/manifest.py +166 -0
- vstack/cli/parser.py +156 -0
- vstack/constants.py +84 -0
- vstack/frontmatter/__init__.py +8 -0
- vstack/frontmatter/parser.py +272 -0
- vstack/frontmatter/schema.py +142 -0
- vstack/frontmatter/serializer.py +208 -0
- vstack/instructions/__init__.py +5 -0
- vstack/instructions/config.py +21 -0
- vstack/instructions/constants.py +9 -0
- vstack/instructions/generator.py +13 -0
- vstack/main.py +71 -0
- vstack/models.py +35 -0
- vstack/prompts/__init__.py +5 -0
- vstack/prompts/config.py +21 -0
- vstack/prompts/constants.py +9 -0
- vstack/prompts/generator.py +13 -0
- vstack/skills/__init__.py +5 -0
- vstack/skills/config.py +58 -0
- vstack/skills/constants.py +17 -0
- vstack/skills/generator.py +20 -0
- vstack/skills/models.py +15 -0
- vstack-0.0.0.dist-info/METADATA +725 -0
- vstack-0.0.0.dist-info/RECORD +119 -0
- vstack-0.0.0.dist-info/WHEEL +4 -0
- vstack-0.0.0.dist-info/entry_points.txt +3 -0
- vstack-0.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
# requirements — Requirements Gathering & Documentation
|
|
4
|
+
|
|
5
|
+
Clarify and document what must be built before engineering starts. Produce a
|
|
6
|
+
`docs/product/requirements.md` that downstream roles (architect, designer, engineer) can
|
|
7
|
+
work from.
|
|
8
|
+
|
|
9
|
+
## Out of scope
|
|
10
|
+
|
|
11
|
+
- Technical design and architecture decisions (use `architecture`)
|
|
12
|
+
- API/service design (use `design`)
|
|
13
|
+
- Roadmap and milestone planning (product role artifact)
|
|
14
|
+
- Implementation (engineering role)
|
|
15
|
+
|
|
16
|
+
## Deliverable and artifact policy
|
|
17
|
+
|
|
18
|
+
- Primary deliverable: `docs/product/requirements.md`
|
|
19
|
+
- Baseline-first default: write final requirements directly to `docs/product/requirements.md` on the feature branch.
|
|
20
|
+
- Optional WIP area for complex/uncertain intake: `docs/delta/{intake-id}/REQUIREMENTS_DELTA.md`
|
|
21
|
+
- Before merge: consolidate any required content from optional delta notes back into `docs/product/requirements.md`, then remove stale WIP notes.
|
|
22
|
+
|
|
23
|
+
______________________________________________________________________
|
|
24
|
+
|
|
25
|
+
## Step 0: Context
|
|
26
|
+
|
|
27
|
+
Read existing artifacts before asking questions:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cat docs/product/vision.md 2>/dev/null || true
|
|
31
|
+
cat docs/product/requirements.md 2>/dev/null || true
|
|
32
|
+
cat docs/product/roadmap.md 2>/dev/null || true
|
|
33
|
+
cat README.md 2>/dev/null | head -40 || true
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Identify what's already known and what needs clarification.
|
|
37
|
+
|
|
38
|
+
______________________________________________________________________
|
|
39
|
+
|
|
40
|
+
## Step 1: Problem Statement
|
|
41
|
+
|
|
42
|
+
Clarify the core problem being solved:
|
|
43
|
+
|
|
44
|
+
> **Question:** Describe what you want to build and why.
|
|
45
|
+
>
|
|
46
|
+
> - What problem does this solve?
|
|
47
|
+
> - Who experiences this problem today?
|
|
48
|
+
> - What happens if we don't solve it?
|
|
49
|
+
|
|
50
|
+
Document:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
## Problem Statement
|
|
54
|
+
[One paragraph: root problem, who has it, impact of not solving it]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
______________________________________________________________________
|
|
58
|
+
|
|
59
|
+
## Step 2: Users & Stakeholders
|
|
60
|
+
|
|
61
|
+
Who uses or is affected by this?
|
|
62
|
+
|
|
63
|
+
| Role | Description | Primary need |
|
|
64
|
+
| ----------- | ----------- | ------------ |
|
|
65
|
+
| [User type] | | |
|
|
66
|
+
|
|
67
|
+
______________________________________________________________________
|
|
68
|
+
|
|
69
|
+
## Step 3: Functional Requirements
|
|
70
|
+
|
|
71
|
+
What must the system do? Use the format: "The system must [verb] [object] [condition/constraint]."
|
|
72
|
+
|
|
73
|
+
Ask for clarity on ambiguous areas:
|
|
74
|
+
|
|
75
|
+
> **Question:** Are there any specific behaviors or edge cases that are critical?
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## Functional Requirements
|
|
79
|
+
|
|
80
|
+
### Must have (MVP)
|
|
81
|
+
- FR-01: The system must [...]
|
|
82
|
+
- FR-02: The system must [...]
|
|
83
|
+
|
|
84
|
+
### Should have (desirable)
|
|
85
|
+
- FR-03: [...]
|
|
86
|
+
|
|
87
|
+
### Won't have (explicitly out of scope)
|
|
88
|
+
- [State what will NOT be built in this iteration]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
______________________________________________________________________
|
|
92
|
+
|
|
93
|
+
## Step 4: Non-Functional Requirements
|
|
94
|
+
|
|
95
|
+
| Category | Requirement | Measurable target |
|
|
96
|
+
| ------------ | -------------- | ------------------------------------ |
|
|
97
|
+
| Performance | Response time | p99 < 500ms under X rps |
|
|
98
|
+
| Availability | Uptime | 99.9% (< 8.7h downtime/year) |
|
|
99
|
+
| Security | Auth | All endpoints require authentication |
|
|
100
|
+
| Scalability | Load | Handle up to N concurrent users |
|
|
101
|
+
| Compliance | Data residency | Data stored in [region] |
|
|
102
|
+
|
|
103
|
+
Ask:
|
|
104
|
+
|
|
105
|
+
> **Question:** Are there any hard non-functional requirements (performance, security,
|
|
106
|
+
> compliance, data residency)?
|
|
107
|
+
|
|
108
|
+
______________________________________________________________________
|
|
109
|
+
|
|
110
|
+
## Step 5: Constraints & Assumptions
|
|
111
|
+
|
|
112
|
+
Document known constraints:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
## Constraints
|
|
116
|
+
- Budget: [if relevant]
|
|
117
|
+
- Timeline: [hard deadline if any]
|
|
118
|
+
- Technology: [must use X, cannot use Y]
|
|
119
|
+
- Team: [available skill set]
|
|
120
|
+
- Existing systems: [must integrate with X]
|
|
121
|
+
|
|
122
|
+
## Assumptions
|
|
123
|
+
- [Things assumed true that could invalidate requirements if wrong]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
______________________________________________________________________
|
|
127
|
+
|
|
128
|
+
## Step 6: Success Criteria
|
|
129
|
+
|
|
130
|
+
What does "done" look like? How do we know the requirements are met?
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## Success Criteria
|
|
134
|
+
- [ ] [Measurable outcome 1]
|
|
135
|
+
- [ ] [Measurable outcome 2]
|
|
136
|
+
- [ ] [Acceptance test: given X, when Y, then Z]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
______________________________________________________________________
|
|
140
|
+
|
|
141
|
+
## Step 7: Open Questions
|
|
142
|
+
|
|
143
|
+
List anything that is unclear and needs a decision before work begins:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
## Open Questions
|
|
147
|
+
- [ ] [Question] — Owner: [who decides] — Deadline: [when needed]
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
______________________________________________________________________
|
|
151
|
+
|
|
152
|
+
## Output: requirements.md
|
|
153
|
+
|
|
154
|
+
Write all findings to `docs/product/requirements.md`:
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
# Requirements — [feature/project name]
|
|
158
|
+
|
|
159
|
+
**Status:** draft | reviewed | approved
|
|
160
|
+
**Date:** YYYY-MM-DD
|
|
161
|
+
**Author:** product role
|
|
162
|
+
|
|
163
|
+
## Problem Statement
|
|
164
|
+
[...]
|
|
165
|
+
|
|
166
|
+
## Users & Stakeholders
|
|
167
|
+
[table]
|
|
168
|
+
|
|
169
|
+
## Functional Requirements
|
|
170
|
+
[...]
|
|
171
|
+
|
|
172
|
+
## Non-Functional Requirements
|
|
173
|
+
[table]
|
|
174
|
+
|
|
175
|
+
## Constraints & Assumptions
|
|
176
|
+
[...]
|
|
177
|
+
|
|
178
|
+
## Success Criteria
|
|
179
|
+
[...]
|
|
180
|
+
|
|
181
|
+
## Open Questions
|
|
182
|
+
[...]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
After writing, summarize what was decided so the architect role can start.
|
|
186
|
+
|
|
187
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: security
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
OWASP Top 10 + STRIDE security audit for APIs, services, and libraries.
|
|
5
|
+
Finds authentication bypasses, injection vulnerabilities, insecure configurations,
|
|
6
|
+
exposed secrets, dependency vulnerabilities, and broken access control.
|
|
7
|
+
Use when asked to "security audit", "security review", or "check for vulnerabilities".
|
|
8
|
+
Proactively suggest before any code ships to production.
|
|
9
|
+
argument-hint: '[component or service to audit]'
|
|
10
|
+
|
|
11
|
+
license: MIT
|
|
12
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
13
|
+
metadata:
|
|
14
|
+
owner: vstack
|
|
15
|
+
maturity: stable
|
|
16
|
+
user-invocable: true
|
|
17
|
+
disable-model-invocation: false
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
{{BASE_BRANCH}}
|
|
4
|
+
|
|
5
|
+
# security — Security Audit (OWASP Top 10 + STRIDE)
|
|
6
|
+
|
|
7
|
+
Perform a systematic security audit. No finding is too small. Report every issue
|
|
8
|
+
with severity, evidence, and specific remediation.
|
|
9
|
+
|
|
10
|
+
## Out of scope
|
|
11
|
+
|
|
12
|
+
- Full code review for non-security issues (use `code-review`)
|
|
13
|
+
- Performance analysis (use `performance`)
|
|
14
|
+
- Architecture design (use `architecture`)
|
|
15
|
+
- Writing new features (engineering role)
|
|
16
|
+
|
|
17
|
+
## Deliverable and artifact policy
|
|
18
|
+
|
|
19
|
+
- Primary deliverable: `docs/security-report.md`
|
|
20
|
+
- Baseline-first default: write final findings directly to `docs/security-report.md` on the feature branch.
|
|
21
|
+
- Optional WIP area for complex/uncertain efforts: `docs/delta/{id}/SECURITY_DELTA.md`
|
|
22
|
+
- Before merge: consolidate severity-ranked findings and mitigations into baseline security reports.
|
|
23
|
+
|
|
24
|
+
## Audit Scope
|
|
25
|
+
|
|
26
|
+
Parse the user's request for scope:
|
|
27
|
+
|
|
28
|
+
- **Full audit:** All code in the repository
|
|
29
|
+
- **Diff audit:** Only changes since base branch (default on feature branches)
|
|
30
|
+
- **Dependency audit:** Only dependency vulnerabilities
|
|
31
|
+
- **Config audit:** Only infrastructure and configuration
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Detect scope
|
|
35
|
+
CURRENT=$(git branch --show-current)
|
|
36
|
+
git diff <base> --stat 2>/dev/null | head -20 || true
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
______________________________________________________________________
|
|
40
|
+
|
|
41
|
+
## Part 1: OWASP Top 10
|
|
42
|
+
|
|
43
|
+
### A01: Broken Access Control
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Look for authorization checks
|
|
47
|
+
grep -r -n "is_admin\|hasRole\|checkPermission\|authorize\|can(" \
|
|
48
|
+
--include='*.ts' --include='*.py' --include='*.go' --include='*.java' \
|
|
49
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build --exclude-dir=vendor . 2>/dev/null | head -30
|
|
50
|
+
|
|
51
|
+
# Look for endpoints missing auth
|
|
52
|
+
grep -r -n "@app.route\|router\.\|@Get\|@Post\|@Put\|@Delete\|@Patch" \
|
|
53
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
54
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | head -30
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Check:
|
|
58
|
+
|
|
59
|
+
- [ ] Every endpoint checks authentication AND authorization
|
|
60
|
+
- [ ] Authorization is per-resource, not just per-role
|
|
61
|
+
- [ ] No direct object reference without ownership check (IDOR)
|
|
62
|
+
- [ ] Admin endpoints protected by privilege check, not just auth
|
|
63
|
+
- [ ] JWT/token claims validated (expiry, issuer, audience)
|
|
64
|
+
|
|
65
|
+
### A02: Cryptographic Failures
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Find hardcoded secrets
|
|
69
|
+
grep -r -E '(password|secret|api_key|private_key|token)\s*[=:]\s*["\x27][^"\x27]{8,}' \
|
|
70
|
+
--include='*.ts' --include='*.py' --include='*.go' --include='*.yaml' --include='*.env' \
|
|
71
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build --exclude-dir=.git . 2>/dev/null | grep -v test | grep -v example
|
|
72
|
+
|
|
73
|
+
# Find weak crypto
|
|
74
|
+
grep -r -n "MD5\|SHA1\|DES\|RC4\|Math.random\|random.random" \
|
|
75
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
76
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | head -20
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Check:
|
|
80
|
+
|
|
81
|
+
- [ ] No secrets in source code (use secret manager)
|
|
82
|
+
- [ ] Passwords hashed with bcrypt/argon2/scrypt (not MD5/SHA1)
|
|
83
|
+
- [ ] TLS enforced for all network communication
|
|
84
|
+
- [ ] Cryptographic random for security-sensitive values
|
|
85
|
+
- [ ] Sensitive data encrypted at rest
|
|
86
|
+
|
|
87
|
+
### A03: Injection
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# SQL injection risk
|
|
91
|
+
grep -r -n 'query\|execute\|raw\|f"' \
|
|
92
|
+
--include='*.py' --include='*.ts' --include='*.go' \
|
|
93
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | grep -E '"SELECT|"INSERT|"UPDATE|"DELETE|f".*sql' | head -20
|
|
94
|
+
|
|
95
|
+
# Command injection risk
|
|
96
|
+
grep -r -n 'exec\|subprocess\|shell=True\|execSync\|spawnSync' \
|
|
97
|
+
--include='*.py' --include='*.ts' --include='*.go' \
|
|
98
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | head -20
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Check:
|
|
102
|
+
|
|
103
|
+
- [ ] All database queries use parameterized queries / ORM
|
|
104
|
+
- [ ] No string concatenation in SQL
|
|
105
|
+
- [ ] System commands use argument arrays, not shell strings
|
|
106
|
+
- [ ] Template engines auto-escape output
|
|
107
|
+
|
|
108
|
+
### A04: Insecure Design
|
|
109
|
+
|
|
110
|
+
- [ ] Threat model exists for the system?
|
|
111
|
+
- [ ] No security through obscurity
|
|
112
|
+
- [ ] Principle of least privilege in service-to-service auth
|
|
113
|
+
- [ ] Defense in depth — multiple layers, not single gate
|
|
114
|
+
|
|
115
|
+
### A05: Security Misconfiguration
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Check for debug/development modes
|
|
119
|
+
grep -r -n 'DEBUG\s*=\s*True\|debug:\s*true\|development\|NODE_ENV' \
|
|
120
|
+
--include='*.py' --include='*.ts' --include='*.yaml' --include='*.json' \
|
|
121
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | grep -v test | head -20
|
|
122
|
+
|
|
123
|
+
# Check for permissive CORS
|
|
124
|
+
grep -r -n 'cors\|CORS\|Access-Control-Allow-Origin' \
|
|
125
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
126
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | head -20
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Check:
|
|
130
|
+
|
|
131
|
+
- [ ] Debug mode disabled in production
|
|
132
|
+
- [ ] CORS restricted to known origins (not `*`)
|
|
133
|
+
- [ ] Error messages don't leak internal details
|
|
134
|
+
- [ ] Security headers set (HSTS, CSP, X-Frame-Options if applicable)
|
|
135
|
+
- [ ] Unnecessary features/endpoints disabled in production
|
|
136
|
+
|
|
137
|
+
### A06: Vulnerable and Outdated Components
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Dependency vulnerability scan
|
|
141
|
+
[ -f package.json ] && npm audit 2>/dev/null || true
|
|
142
|
+
[ -f pyproject.toml ] && pip-audit 2>/dev/null || safety check 2>/dev/null || true
|
|
143
|
+
[ -f go.mod ] && govulncheck ./... 2>/dev/null || true
|
|
144
|
+
[ -f Cargo.toml ] && cargo audit 2>/dev/null || true
|
|
145
|
+
[ -f pom.xml ] && mvn dependency-check:check 2>/dev/null || true
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### A07: Identification and Authentication Failures
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Check session/token implementation
|
|
152
|
+
grep -r -n 'jwt\|JWT\|session\|cookie\|token' \
|
|
153
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
154
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | grep -i 'expire\|expiry\|secret\|key' | head -20
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Check:
|
|
158
|
+
|
|
159
|
+
- [ ] Token expiry enforced
|
|
160
|
+
- [ ] Refresh token rotation implemented
|
|
161
|
+
- [ ] Logout invalidates tokens server-side
|
|
162
|
+
- [ ] Password reset tokens single-use and time-limited
|
|
163
|
+
- [ ] Multi-factor authentication for privileged operations (if applicable)
|
|
164
|
+
|
|
165
|
+
### A08: Software and Data Integrity Failures
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Check for unsigned dependencies
|
|
169
|
+
cat package-lock.json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print('Integrity checks:', sum(1 for v in d.get('packages',{}).values() if v.get('integrity')))" 2>/dev/null || true
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Check:
|
|
173
|
+
|
|
174
|
+
- [ ] Dependencies pinned to specific versions with integrity hashes
|
|
175
|
+
- [ ] CI/CD pipeline integrity (no untrusted actions/orbs)
|
|
176
|
+
- [ ] Artifacts signed before distribution
|
|
177
|
+
|
|
178
|
+
### A09: Security Logging and Monitoring Failures
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
grep -r -n 'audit\|security_log\|auth.*log\|access.*log' \
|
|
182
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
183
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | head -20
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Check:
|
|
187
|
+
|
|
188
|
+
- [ ] Authentication events logged (success and failure)
|
|
189
|
+
- [ ] Authorization failure logged with user ID and resource
|
|
190
|
+
- [ ] Suspicious patterns produce alerts
|
|
191
|
+
- [ ] Logs protected from tampering
|
|
192
|
+
- [ ] PII not logged
|
|
193
|
+
|
|
194
|
+
### A10: Server-Side Request Forgery (SSRF)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
grep -r -n 'fetch\|requests\.\|http\.get\|axios\|urllib' \
|
|
198
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
199
|
+
--exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=venv --exclude-dir=env --exclude-dir=__pycache__ --exclude-dir=dist --exclude-dir=build . 2>/dev/null | grep -v test | head -20
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Check:
|
|
203
|
+
|
|
204
|
+
- [ ] URLs from user input are validated against allowlist
|
|
205
|
+
- [ ] Private network ranges blocked (169.254.0.0/16, 10.0.0.0/8, etc.)
|
|
206
|
+
- [ ] SSRF protection on any URL-fetching functionality
|
|
207
|
+
|
|
208
|
+
______________________________________________________________________
|
|
209
|
+
|
|
210
|
+
## Part 2: STRIDE Threat Model
|
|
211
|
+
|
|
212
|
+
For each new service/component, answer:
|
|
213
|
+
|
|
214
|
+
| Threat | Question | Mitigation in place? |
|
|
215
|
+
| -------------------------- | --------------------------------------------------------- | -------------------- |
|
|
216
|
+
| **Spoofing** | Can an attacker impersonate a legitimate user or service? | |
|
|
217
|
+
| **Tampering** | Can an attacker modify data in transit or at rest? | |
|
|
218
|
+
| **Repudiation** | Can actions be denied without audit trail? | |
|
|
219
|
+
| **Information Disclosure** | What sensitive data could leak? | |
|
|
220
|
+
| **Denial of Service** | Can the service be made unavailable? Rate limiting? | |
|
|
221
|
+
| **Elevation of Privilege** | Can a user gain admin access through normal flows? | |
|
|
222
|
+
|
|
223
|
+
______________________________________________________________________
|
|
224
|
+
|
|
225
|
+
## Audit Report
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
## Security Audit Report — [service/repo] — [date]
|
|
229
|
+
Scope: [full/diff/dependency/config]
|
|
230
|
+
|
|
231
|
+
### Critical Findings (immediate fix required)
|
|
232
|
+
1. [Category] `path/to/file:line` — [Issue]
|
|
233
|
+
Evidence: [code snippet or behavior]
|
|
234
|
+
Remediation: [specific fix]
|
|
235
|
+
CVSS: [if applicable]
|
|
236
|
+
|
|
237
|
+
### High Findings (fix before shipping)
|
|
238
|
+
...
|
|
239
|
+
|
|
240
|
+
### Medium Findings (fix in near-term)
|
|
241
|
+
...
|
|
242
|
+
|
|
243
|
+
### Low / Informational
|
|
244
|
+
...
|
|
245
|
+
|
|
246
|
+
### OWASP Coverage
|
|
247
|
+
[X/10 categories checked, N issues found]
|
|
248
|
+
|
|
249
|
+
### Dependency Vulnerabilities
|
|
250
|
+
[X critical, Y high, Z medium]
|
|
251
|
+
|
|
252
|
+
### Recommendation
|
|
253
|
+
[SHIP-READY / FIX CRITICALS / SECURITY REVIEW REQUIRED]
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: verify
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Verification fix-loop skill. Routes by mode (quick/standard/exhaustive), runs
|
|
5
|
+
targeted checks, fixes findings by severity, and re-verifies impacted paths.
|
|
6
|
+
Routes report-only requests to inspect and escalates deep security/performance
|
|
7
|
+
concerns to specialized skills. Use when asked to "verify", "fix failing checks",
|
|
8
|
+
"run QA with fixes", or "re-verify before shipping".
|
|
9
|
+
argument-hint: '[component or feature to verify]'
|
|
10
|
+
|
|
11
|
+
license: MIT
|
|
12
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
13
|
+
metadata:
|
|
14
|
+
owner: vstack
|
|
15
|
+
maturity: stable
|
|
16
|
+
user-invocable: true
|
|
17
|
+
disable-model-invocation: false
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
{{BASE_BRANCH}}
|
|
4
|
+
|
|
5
|
+
# verify - Fix Loop Verification
|
|
6
|
+
|
|
7
|
+
Run a targeted verification fix loop:
|
|
8
|
+
|
|
9
|
+
1. choose scope/mode,
|
|
10
|
+
1. run checks,
|
|
11
|
+
1. fix issues in priority order,
|
|
12
|
+
1. re-run only impacted checks,
|
|
13
|
+
1. report ship readiness.
|
|
14
|
+
|
|
15
|
+
Use `inspect` for read-only auditing.
|
|
16
|
+
|
|
17
|
+
## Out of scope
|
|
18
|
+
|
|
19
|
+
- Architecture decisions (use `architecture`)
|
|
20
|
+
- Full security audit (use `security`)
|
|
21
|
+
- Performance benchmarking/profiling (use `performance`)
|
|
22
|
+
- New feature implementation outside verification fixes (engineering role)
|
|
23
|
+
|
|
24
|
+
## Deliverable and artifact policy
|
|
25
|
+
|
|
26
|
+
- Primary deliverable: `docs/test-report.md`
|
|
27
|
+
- Additional deliverables when applicable: `docs/security-report.md`, `docs/performance-baseline.md`
|
|
28
|
+
- Baseline-first default: write final verification outcomes directly to baseline reports on the feature branch.
|
|
29
|
+
- Optional WIP area for complex/uncertain efforts: `docs/delta/{id}/VERIFY_DELTA.md`
|
|
30
|
+
- Before merge: consolidate final findings, severity, and ship-readiness verdict into baseline reports.
|
|
31
|
+
|
|
32
|
+
______________________________________________________________________
|
|
33
|
+
|
|
34
|
+
## Step 0: Route Mode
|
|
35
|
+
|
|
36
|
+
Classify first, then run one mode.
|
|
37
|
+
|
|
38
|
+
> **Question:** Which verify mode should be used?
|
|
39
|
+
> **Options:**
|
|
40
|
+
> A) quick - critical/high regressions only
|
|
41
|
+
> B) standard - default verification + fix loop
|
|
42
|
+
> C) exhaustive - broad verification and full fix sweep
|
|
43
|
+
> D) report-only - route to `inspect`
|
|
44
|
+
> **Default if no response:** B
|
|
45
|
+
|
|
46
|
+
If D, stop and route to `inspect`.
|
|
47
|
+
|
|
48
|
+
______________________________________________________________________
|
|
49
|
+
|
|
50
|
+
## Step 1: Scope and Safety
|
|
51
|
+
|
|
52
|
+
Parse user scope:
|
|
53
|
+
|
|
54
|
+
- Target: whole repo or specific component/path
|
|
55
|
+
- Tier: quick/standard/exhaustive
|
|
56
|
+
- Source: full branch diff or explicit path
|
|
57
|
+
|
|
58
|
+
Check working tree:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
git status --porcelain
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If dirty, ask before proceeding because verify may create multiple atomic fix commits.
|
|
65
|
+
|
|
66
|
+
Bootstrap test command:
|
|
67
|
+
|
|
68
|
+
{{RUN_TESTS}}
|
|
69
|
+
|
|
70
|
+
______________________________________________________________________
|
|
71
|
+
|
|
72
|
+
## Step 2: Baseline Checks (all modes)
|
|
73
|
+
|
|
74
|
+
Run baseline checks for the selected scope.
|
|
75
|
+
|
|
76
|
+
### 2.1 Lint and Type
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
[ -f package.json ] && (npm run lint 2>/dev/null || true)
|
|
80
|
+
[ -f tsconfig.json ] && npx tsc --noEmit 2>/dev/null || true
|
|
81
|
+
[ -f pyproject.toml ] && (ruff check . 2>/dev/null || true)
|
|
82
|
+
[ -f pyproject.toml ] && (mypy . 2>/dev/null || pyright . 2>/dev/null || true)
|
|
83
|
+
[ -f go.mod ] && (go vet ./... 2>/dev/null || true)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2.2 Unit Tests
|
|
87
|
+
|
|
88
|
+
{{RUN_TESTS}}
|
|
89
|
+
|
|
90
|
+
______________________________________________________________________
|
|
91
|
+
|
|
92
|
+
## Step 3: Conditional Checks by Mode
|
|
93
|
+
|
|
94
|
+
### quick
|
|
95
|
+
|
|
96
|
+
- Run only failing or high-risk checks related to changed code
|
|
97
|
+
- Skip broad integration/contract/smoke unless directly impacted
|
|
98
|
+
|
|
99
|
+
### standard
|
|
100
|
+
|
|
101
|
+
Run these when present:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Integration
|
|
105
|
+
[ -f package.json ] && npm run test:integration 2>/dev/null || true
|
|
106
|
+
[ -f pyproject.toml ] && python -m pytest -m integration -v 2>/dev/null || true
|
|
107
|
+
[ -f go.mod ] && go test -run Integration ./... 2>/dev/null || true
|
|
108
|
+
|
|
109
|
+
# Contract
|
|
110
|
+
[ -f openapi.yaml ] && npx @redocly/cli lint openapi.yaml 2>/dev/null || true
|
|
111
|
+
[ -n "$(find . -name '*.proto' 2>/dev/null | head -1)" ] && buf lint 2>/dev/null || true
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Also verify observability on impacted paths:
|
|
115
|
+
|
|
116
|
+
- Structured logs for critical transitions and errors
|
|
117
|
+
- Metrics for latency/error/saturation
|
|
118
|
+
- Trace propagation across service boundaries
|
|
119
|
+
- Alerts or runbooks for critical failure modes
|
|
120
|
+
|
|
121
|
+
### exhaustive
|
|
122
|
+
|
|
123
|
+
Run standard checks plus:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Optional smoke checks if scripts exist
|
|
127
|
+
find . -name '*.smoke.*' -o -name '*smoke-test*' -o -name 'smoke.sh' 2>/dev/null | head -5
|
|
128
|
+
|
|
129
|
+
# Dependency vulnerability gate (lightweight only; full audit belongs to security)
|
|
130
|
+
[ -f package.json ] && npm audit --audit-level=high 2>/dev/null || true
|
|
131
|
+
[ -f pyproject.toml ] && pip-audit 2>/dev/null || true
|
|
132
|
+
[ -f go.mod ] && govulncheck ./... 2>/dev/null || true
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
For exhaustive mode, require observability evidence (logs/metrics/traces/alerts) in the final report.
|
|
136
|
+
|
|
137
|
+
If deep security/performance concerns appear, stop and route to `security` or `performance`.
|
|
138
|
+
|
|
139
|
+
______________________________________________________________________
|
|
140
|
+
|
|
141
|
+
## Step 4: Triage
|
|
142
|
+
|
|
143
|
+
Classify findings:
|
|
144
|
+
|
|
145
|
+
| Severity | Examples |
|
|
146
|
+
| -------- | ------------------------------------------------------------------- |
|
|
147
|
+
| critical | test crashes, build breaks, data integrity/security regressions |
|
|
148
|
+
| high | contract violations, broken error handling, missing required checks |
|
|
149
|
+
| medium | flaky tests, non-critical behavior gaps |
|
|
150
|
+
| low | style and minor cleanups |
|
|
151
|
+
|
|
152
|
+
Fix policy:
|
|
153
|
+
|
|
154
|
+
- quick: critical + high
|
|
155
|
+
- standard: critical + high + medium
|
|
156
|
+
- exhaustive: all severities
|
|
157
|
+
|
|
158
|
+
______________________________________________________________________
|
|
159
|
+
|
|
160
|
+
## Step 5: Fix and Re-verify Loop
|
|
161
|
+
|
|
162
|
+
For each fixable issue in severity order:
|
|
163
|
+
|
|
164
|
+
1. Reproduce and confirm root cause.
|
|
165
|
+
1. Apply minimal fix.
|
|
166
|
+
1. Commit atomically (`fix: ...`).
|
|
167
|
+
1. Re-run only impacted checks first.
|
|
168
|
+
1. If needed, run the relevant broader check suite.
|
|
169
|
+
|
|
170
|
+
If an issue implies architecture or design mismatch, stop and escalate.
|
|
171
|
+
|
|
172
|
+
______________________________________________________________________
|
|
173
|
+
|
|
174
|
+
## Step 6: Final Report
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
## Verification Report - [component/repo] - [date]
|
|
178
|
+
|
|
179
|
+
selected_mode: [quick|standard|exhaustive]
|
|
180
|
+
scope: [path/component/full]
|
|
181
|
+
|
|
182
|
+
### Summary
|
|
183
|
+
- tests: [X pass / Y fail / Z skip]
|
|
184
|
+
- issues found: [N critical / N high / N medium / N low]
|
|
185
|
+
- fixes applied: [N]
|
|
186
|
+
- deferred: [N]
|
|
187
|
+
|
|
188
|
+
### Fixed Issues
|
|
189
|
+
1. [issue] - [commit SHA]
|
|
190
|
+
|
|
191
|
+
### Deferred Issues
|
|
192
|
+
1. [issue] - [why deferred] - [owner]
|
|
193
|
+
|
|
194
|
+
### Routed Follow-ups (if any)
|
|
195
|
+
- [security|performance|architecture|design] - [reason]
|
|
196
|
+
|
|
197
|
+
### Ship Readiness
|
|
198
|
+
[READY TO SHIP | NEEDS FIXES | BLOCKED]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: vision
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
CEO/founder-mode plan review. Rethink the problem from first principles, validate
|
|
5
|
+
ambition and scope, challenge premises, find the 10x solution. Four modes:
|
|
6
|
+
SCOPE EXPANSION (dream big), SELECTIVE EXPANSION (hold scope + cherry-pick),
|
|
7
|
+
HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials).
|
|
8
|
+
Use when asked to "think bigger", "strategy review", "rethink this", or
|
|
9
|
+
"is this ambitious enough". Proactively suggest when a plan feels under-scoped
|
|
10
|
+
or when the user is questioning ambition.
|
|
11
|
+
argument-hint: '[plan or idea to review]'
|
|
12
|
+
|
|
13
|
+
license: MIT
|
|
14
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
15
|
+
metadata:
|
|
16
|
+
owner: vstack
|
|
17
|
+
maturity: stable
|
|
18
|
+
user-invocable: true
|
|
19
|
+
disable-model-invocation: false
|