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,231 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
# design — API & Service Design
|
|
4
|
+
|
|
5
|
+
Produce a complete service or API design document from minimal input. The output
|
|
6
|
+
becomes the source of truth for implementation.
|
|
7
|
+
|
|
8
|
+
## Out of scope
|
|
9
|
+
|
|
10
|
+
- Reviewing existing DX/ergonomics (use `consult`)
|
|
11
|
+
- Architecture review (use `architecture`)
|
|
12
|
+
- Implementation (engineering role)
|
|
13
|
+
- Contract compliance validation (use `verify` or `code-review`)
|
|
14
|
+
|
|
15
|
+
______________________________________________________________________
|
|
16
|
+
|
|
17
|
+
## Deliverable and artifact policy
|
|
18
|
+
|
|
19
|
+
- Primary deliverable: `docs/design/design.md`
|
|
20
|
+
- Additional deliverable when user-facing scope: `docs/design/ux.md`
|
|
21
|
+
- Baseline-first default: write final design decisions directly to `docs/design/*.md` on the feature branch.
|
|
22
|
+
- Optional WIP area for complex/uncertain efforts: `docs/delta/{id}/DESIGN_DELTA.md`
|
|
23
|
+
- Before merge: consolidate any delta draft into baseline design docs.
|
|
24
|
+
|
|
25
|
+
______________________________________________________________________
|
|
26
|
+
|
|
27
|
+
## Step 0: Understand the Domain
|
|
28
|
+
|
|
29
|
+
> **Question:** What are we designing?
|
|
30
|
+
> **Options:**
|
|
31
|
+
> A) REST API for a new service
|
|
32
|
+
> B) gRPC service / Protobuf schema
|
|
33
|
+
> C) Event-driven API (AsyncAPI / Kafka topics)
|
|
34
|
+
> D) Library / SDK public interface
|
|
35
|
+
> E) Internal service interface (service-to-service)
|
|
36
|
+
> **Default if no response:** A
|
|
37
|
+
|
|
38
|
+
Gather context:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Existing code/contracts
|
|
42
|
+
find . -name 'openapi*' -o -name '*.proto' -o -name 'asyncapi*' 2>/dev/null | head -5
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
______________________________________________________________________
|
|
46
|
+
|
|
47
|
+
## Step 1: Resource Design
|
|
48
|
+
|
|
49
|
+
For each resource/entity in the domain:
|
|
50
|
+
|
|
51
|
+
1. **Name:** Plural noun (`users`, `orders`, `payments`)
|
|
52
|
+
1. **Ownership:** Which service owns this resource?
|
|
53
|
+
1. **Lifecycle:** What states can it be in?
|
|
54
|
+
1. **Relationships:** What resources does it reference?
|
|
55
|
+
|
|
56
|
+
Produce an entity diagram. Prefer Mermaid when possible; use ASCII as a fallback
|
|
57
|
+
only when Mermaid support is unavailable or would reduce clarity.
|
|
58
|
+
|
|
59
|
+
```mermaid
|
|
60
|
+
erDiagram
|
|
61
|
+
USER ||--o{ ORDER : places
|
|
62
|
+
USER {
|
|
63
|
+
string id
|
|
64
|
+
string email
|
|
65
|
+
string name
|
|
66
|
+
}
|
|
67
|
+
ORDER {
|
|
68
|
+
string id
|
|
69
|
+
string user_id
|
|
70
|
+
string status
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
______________________________________________________________________
|
|
75
|
+
|
|
76
|
+
## Step 2: Endpoint Design
|
|
77
|
+
|
|
78
|
+
For each resource, define CRUD + custom actions:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
# Example
|
|
82
|
+
GET /users # List (paginated)
|
|
83
|
+
POST /users # Create
|
|
84
|
+
GET /users/{id} # Get by ID
|
|
85
|
+
PATCH /users/{id} # Update (partial)
|
|
86
|
+
DELETE /users/{id} # Soft delete
|
|
87
|
+
|
|
88
|
+
# Custom actions (use sub-resources or action paths)
|
|
89
|
+
POST /users/{id}/activate # Non-CRUD action
|
|
90
|
+
POST /users/{id}/deactivate
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
______________________________________________________________________
|
|
94
|
+
|
|
95
|
+
## Step 3: Request/Response Conventions
|
|
96
|
+
|
|
97
|
+
Define the standard envelope:
|
|
98
|
+
|
|
99
|
+
```yaml
|
|
100
|
+
# Success response (single resource)
|
|
101
|
+
{
|
|
102
|
+
"data": { ... },
|
|
103
|
+
"meta": { "request_id": "...", "version": "v1" }
|
|
104
|
+
}
|
|
105
|
+
# Success response (collection)
|
|
106
|
+
{
|
|
107
|
+
"data": [ ... ],
|
|
108
|
+
"pagination": {
|
|
109
|
+
"cursor": "...",
|
|
110
|
+
"has_next": true,
|
|
111
|
+
"total": 1000
|
|
112
|
+
},
|
|
113
|
+
"meta": { "request_id": "...", "version": "v1" }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Error response
|
|
117
|
+
{
|
|
118
|
+
"error": {
|
|
119
|
+
"code": "VALIDATION_FAILED",
|
|
120
|
+
"message": "Request validation failed",
|
|
121
|
+
"details": [
|
|
122
|
+
{ "field": "email", "issue": "Invalid email format" }
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
"meta": { "request_id": "...", "version": "v1" }
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
______________________________________________________________________
|
|
130
|
+
|
|
131
|
+
## Step 4: Error Code Taxonomy
|
|
132
|
+
|
|
133
|
+
Define a machine-readable error code taxonomy:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
# Auth errors
|
|
137
|
+
UNAUTHENTICATED — No valid credentials provided
|
|
138
|
+
UNAUTHORIZED — Credentials valid but permission denied
|
|
139
|
+
TOKEN_EXPIRED — JWT or session token has expired
|
|
140
|
+
RATE_LIMITED — Too many requests
|
|
141
|
+
|
|
142
|
+
# Validation errors
|
|
143
|
+
VALIDATION_FAILED — Request body/params failed validation
|
|
144
|
+
INVALID_FORMAT — Field format invalid (e.g., not a valid UUID)
|
|
145
|
+
MISSING_REQUIRED — Required field absent
|
|
146
|
+
CONSTRAINT_VIOLATED — Business constraint violated
|
|
147
|
+
|
|
148
|
+
# Resource errors
|
|
149
|
+
NOT_FOUND — Resource doesn't exist
|
|
150
|
+
CONFLICT — Resource state conflict (e.g., duplicate)
|
|
151
|
+
GONE — Resource permanently deleted
|
|
152
|
+
|
|
153
|
+
# System errors
|
|
154
|
+
INTERNAL_ERROR — Unexpected server error (don't expose details)
|
|
155
|
+
DEPENDENCY_ERROR — Upstream service failure
|
|
156
|
+
UNAVAILABLE — Service temporarily unavailable
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
______________________________________________________________________
|
|
160
|
+
|
|
161
|
+
## Step 5: Versioning & Contract Discipline
|
|
162
|
+
|
|
163
|
+
Define the versioning approach:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
Versioning: URL path prefix (/v1/, /v2/)
|
|
167
|
+
Breaking change policy: 12-month minimum support after deprecation
|
|
168
|
+
Deprecation process:
|
|
169
|
+
1. Add Deprecation header with sunset date
|
|
170
|
+
2. Add X-API-Warn header with migration path
|
|
171
|
+
3. Update docs with migration guide
|
|
172
|
+
4. Remove version only after sunset date
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### API Contract Checklist
|
|
176
|
+
|
|
177
|
+
- [ ] OpenAPI / AsyncAPI spec updated for any new or changed endpoints
|
|
178
|
+
- [ ] Breaking changes flagged (field removal, type change, required→optional, enum value removal)
|
|
179
|
+
- [ ] Backward-compatible changes documented (new optional fields, new enum values)
|
|
180
|
+
- [ ] Error response envelopes consistent with existing API conventions
|
|
181
|
+
- [ ] Pagination contract consistent (cursor vs offset, envelope shape)
|
|
182
|
+
- [ ] Rate limiting headers documented if applicable
|
|
183
|
+
- [ ] Authentication/authorization contracts documented
|
|
184
|
+
- [ ] Semver bump reflects compatibility level:
|
|
185
|
+
- PATCH → bug fix, no contract change
|
|
186
|
+
- MINOR → new optional fields, backward compatible
|
|
187
|
+
- MAJOR → breaking change
|
|
188
|
+
|
|
189
|
+
______________________________________________________________________
|
|
190
|
+
|
|
191
|
+
## Step 6: Authentication & Authorization
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
Auth mechanism: Bearer token (JWT)
|
|
195
|
+
Token lifecycle: Access (15min) + Refresh (30 days)
|
|
196
|
+
Token claims: user_id, roles[], tenant_id
|
|
197
|
+
Authorization model: RBAC with per-resource checks
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
______________________________________________________________________
|
|
201
|
+
|
|
202
|
+
## Step 7: Produce the Design Document
|
|
203
|
+
|
|
204
|
+
Output a complete design document to `docs/design/design.md` or `openapi.yaml`:
|
|
205
|
+
|
|
206
|
+
```markdown
|
|
207
|
+
# API Design — [Service Name]
|
|
208
|
+
|
|
209
|
+
## Overview
|
|
210
|
+
[One paragraph purpose]
|
|
211
|
+
|
|
212
|
+
## Resources
|
|
213
|
+
[Entity diagram + table]
|
|
214
|
+
|
|
215
|
+
## Endpoints
|
|
216
|
+
[Endpoint table]
|
|
217
|
+
|
|
218
|
+
## Conventions
|
|
219
|
+
[Request/response envelope, error codes, pagination]
|
|
220
|
+
|
|
221
|
+
## Versioning
|
|
222
|
+
[Strategy and policy]
|
|
223
|
+
|
|
224
|
+
## Authentication
|
|
225
|
+
[Auth flow and token lifecycle]
|
|
226
|
+
|
|
227
|
+
## Security
|
|
228
|
+
[Input validation, rate limiting, CORS policy]
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Post-release documentation alignment. Updates README, API docs, migration
|
|
5
|
+
guides, and related docs to match shipped behavior. Does not own release-note
|
|
6
|
+
generation or CHANGELOG updates.
|
|
7
|
+
Use after release or deploy, or when asked to "update docs", "align
|
|
8
|
+
documentation", or "refresh README/API docs".
|
|
9
|
+
argument-hint: '[release or change to document]'
|
|
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,128 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
{{BASE_BRANCH}}
|
|
4
|
+
|
|
5
|
+
# docs — Post-Release Documentation Update
|
|
6
|
+
|
|
7
|
+
Update all documentation to match what was just shipped. Report and write; do not
|
|
8
|
+
change source code.
|
|
9
|
+
|
|
10
|
+
## Out of scope
|
|
11
|
+
|
|
12
|
+
- Code changes or bug fixes (use `verify` or `debug`)
|
|
13
|
+
- Creating the PR (use `pr`)
|
|
14
|
+
- Generating release notes (use `release-notes`)
|
|
15
|
+
- Updating `CHANGELOG.md` (owned by `release-notes`)
|
|
16
|
+
|
|
17
|
+
## Deliverable and artifact policy
|
|
18
|
+
|
|
19
|
+
- Primary deliverables: updated baseline documentation artifacts (for example `README.md`, API docs, migration guides)
|
|
20
|
+
- Baseline-first default: write final documentation updates directly to baseline docs on the feature branch.
|
|
21
|
+
- Optional WIP area for complex/uncertain efforts: `docs/delta/{id}/DOCS_DELTA.md`
|
|
22
|
+
- Before merge: consolidate any documentation delta notes into baseline docs.
|
|
23
|
+
|
|
24
|
+
______________________________________________________________________
|
|
25
|
+
|
|
26
|
+
## Step 0: Scope the Release
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# What changed in this release?
|
|
30
|
+
git log <base>..HEAD --oneline
|
|
31
|
+
git diff <base> --stat | head -30
|
|
32
|
+
|
|
33
|
+
# Current version
|
|
34
|
+
cat VERSION 2>/dev/null \
|
|
35
|
+
|| node -p "require('./package.json').version" 2>/dev/null \
|
|
36
|
+
|| echo "unknown"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
______________________________________________________________________
|
|
40
|
+
|
|
41
|
+
## Step 1: README
|
|
42
|
+
|
|
43
|
+
Review whether README needs updates:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
cat README.md 2>/dev/null | head -60
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Check:
|
|
50
|
+
|
|
51
|
+
- [ ] Installation instructions still accurate?
|
|
52
|
+
- [ ] "Getting started" example still works?
|
|
53
|
+
- [ ] Feature list reflects new capabilities?
|
|
54
|
+
- [ ] Any deprecated features removed from featured examples?
|
|
55
|
+
- [ ] Badges (version, CI status) still accurate?
|
|
56
|
+
|
|
57
|
+
______________________________________________________________________
|
|
58
|
+
|
|
59
|
+
## Step 2: API Documentation
|
|
60
|
+
|
|
61
|
+
If there's an OpenAPI / AsyncAPI spec:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
cat openapi.yaml 2>/dev/null | head -40 || true
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Check:
|
|
68
|
+
|
|
69
|
+
- [ ] Spec version matches VERSION?
|
|
70
|
+
- [ ] New endpoints documented?
|
|
71
|
+
- [ ] Changed endpoints updated?
|
|
72
|
+
- [ ] Deprecated endpoints marked with `deprecated: true`?
|
|
73
|
+
- [ ] Response examples accurate?
|
|
74
|
+
|
|
75
|
+
If there's generated API documentation (Swagger UI, Redoc, TypeDoc, Sphinx):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm run docs 2>/dev/null || make docs 2>/dev/null || true
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
______________________________________________________________________
|
|
82
|
+
|
|
83
|
+
## Step 3: MIGRATIONS Guide (if applicable)
|
|
84
|
+
|
|
85
|
+
If this release contains breaking changes or migration steps:
|
|
86
|
+
|
|
87
|
+
- Create or update `MIGRATIONS.md` or `docs/migrations/vX.md`
|
|
88
|
+
- Document: why the change was made, what behavior changed, migration steps, code examples
|
|
89
|
+
|
|
90
|
+
______________________________________________________________________
|
|
91
|
+
|
|
92
|
+
## Step 4: Code Comments & ADRs
|
|
93
|
+
|
|
94
|
+
For significant architectural changes:
|
|
95
|
+
|
|
96
|
+
- Check if inline code comments reference outdated behavior
|
|
97
|
+
|
|
98
|
+
- Add an Architecture Decision Record in `docs/architecture/adr/` if a significant decision was made
|
|
99
|
+
|
|
100
|
+
(use the `adr` skill for the full ADR writing procedure)
|
|
101
|
+
|
|
102
|
+
______________________________________________________________________
|
|
103
|
+
|
|
104
|
+
## Step 5: Commit Documentation Updates
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git add README.md openapi.yaml docs/ 2>/dev/null || true
|
|
108
|
+
git commit -m "docs: update documentation for v$(cat VERSION 2>/dev/null || echo 'unknown')"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
______________________________________________________________________
|
|
112
|
+
|
|
113
|
+
## Summary
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
## Documentation Update — v[VERSION] — [date]
|
|
117
|
+
|
|
118
|
+
Updated:
|
|
119
|
+
- [ ] README.md
|
|
120
|
+
- [ ] API spec (openapi.yaml)
|
|
121
|
+
- [ ] Migration guide (if breaking changes)
|
|
122
|
+
- [ ] ADR (if architectural decision)
|
|
123
|
+
|
|
124
|
+
Skipped (n/a):
|
|
125
|
+
- [ ] [reason]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: explore
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Repository and system discovery. Maps the architecture, understands the
|
|
5
|
+
codebase, identifies technical debt, and produces a structured onboarding
|
|
6
|
+
summary. Use at the start of any engagement with an unfamiliar codebase,
|
|
7
|
+
when asked to "understand this codebase", "map the architecture", "explore
|
|
8
|
+
the repo", or "what does this service do?".
|
|
9
|
+
argument-hint: '[repository or system to explore]'
|
|
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,188 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
# explore — Codebase & Architecture Discovery
|
|
4
|
+
|
|
5
|
+
Map an unfamiliar codebase and produce a structured onboarding summary.
|
|
6
|
+
Report findings; do not change code.
|
|
7
|
+
|
|
8
|
+
## Out of scope
|
|
9
|
+
|
|
10
|
+
- Fixing issues found during exploration (use `debug` or `verify`)
|
|
11
|
+
- Architecture recommendations (use `architecture`)
|
|
12
|
+
- Performance analysis (use `performance` or `analyse`)
|
|
13
|
+
|
|
14
|
+
______________________________________________________________________
|
|
15
|
+
|
|
16
|
+
## Phase 1: Project Overview
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Identify project type and tech stack
|
|
20
|
+
ls -la
|
|
21
|
+
cat README.md 2>/dev/null | head -60 || cat README.rst 2>/dev/null | head -60 || true
|
|
22
|
+
cat package.json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print('Name:', d.get('name'), '| Version:', d.get('version'), '| Main:', d.get('main',''))" 2>/dev/null || true
|
|
23
|
+
cat pyproject.toml 2>/dev/null | head -20 || true
|
|
24
|
+
cat go.mod 2>/dev/null | head -10 || true
|
|
25
|
+
cat Cargo.toml 2>/dev/null | head -10 || true
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Record:
|
|
29
|
+
|
|
30
|
+
- **Project name and purpose**
|
|
31
|
+
- **Tech stack** (language, framework, runtime)
|
|
32
|
+
- **Project type** (API service, library, CLI, worker, monorepo)
|
|
33
|
+
|
|
34
|
+
______________________________________________________________________
|
|
35
|
+
|
|
36
|
+
## Phase 2: Directory Structure
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Top-level structure
|
|
40
|
+
find . -maxdepth 3 -not -path '*/node_modules/*' -not -path '*/.git/*' \
|
|
41
|
+
-not -path '*/vendor/*' -not -path '*/__pycache__/*' -not -path '*/dist/*' \
|
|
42
|
+
-not -path '*/.venv/*' | sort | head -80
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Identify:
|
|
46
|
+
|
|
47
|
+
- Where source code lives (`src/`, `lib/`, `pkg/`, top-level)
|
|
48
|
+
- Where tests live (`test/`, `tests/`, `spec/`, `__tests__/`)
|
|
49
|
+
- Where configs live (`config/`, `.env*`, `*config.yaml`)
|
|
50
|
+
- CI/CD configuration (`.github/workflows/`, `.gitlab-ci.yml`, etc.)
|
|
51
|
+
- Infrastructure code (`k8s/`, `terraform/`, `docker-compose.yml`)
|
|
52
|
+
|
|
53
|
+
______________________________________________________________________
|
|
54
|
+
|
|
55
|
+
## Phase 3: Dependencies & External Services
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Dependency overview
|
|
59
|
+
cat package.json 2>/dev/null | python3 -c "
|
|
60
|
+
import sys, json
|
|
61
|
+
d = json.load(sys.stdin)
|
|
62
|
+
deps = {**d.get('dependencies',{}), **d.get('devDependencies',{})}
|
|
63
|
+
print('Dependencies:', len(deps))
|
|
64
|
+
for k,v in list(deps.items())[:20]: print(f' {k}: {v}')
|
|
65
|
+
" 2>/dev/null || true
|
|
66
|
+
|
|
67
|
+
cat pyproject.toml 2>/dev/null | grep -A 20 '\[tool.poetry.dependencies\]' | head -25 || true
|
|
68
|
+
cat go.mod 2>/dev/null | grep -E '^require|^\t' | head -20 || true
|
|
69
|
+
|
|
70
|
+
# External services referenced
|
|
71
|
+
grep -r -E 'postgres|mysql|redis|mongodb|kafka|rabbitmq|elasticsearch|dynamodb|s3' \
|
|
72
|
+
--include='*.ts' --include='*.py' --include='*.go' --include='*.yaml' --include='*.env*' \
|
|
73
|
+
--exclude-dir=node_modules --exclude-dir=vendor . 2>/dev/null | grep -v test | head -20
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
______________________________________________________________________
|
|
77
|
+
|
|
78
|
+
## Phase 4: API & Service Contracts
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Check for API spec files
|
|
82
|
+
find . -name 'openapi*.yaml' -o -name 'openapi*.json' -o -name 'swagger*.yaml' \
|
|
83
|
+
-o -name '*.proto' -o -name 'asyncapi*.yaml' 2>/dev/null | head -10
|
|
84
|
+
|
|
85
|
+
# Check for route definitions
|
|
86
|
+
grep -r -n '@app.route\|router\.\|@Get\|@Post\|path=' \
|
|
87
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
88
|
+
--exclude-dir=node_modules . 2>/dev/null | head -30
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
______________________________________________________________________
|
|
92
|
+
|
|
93
|
+
## Phase 5: Test Infrastructure
|
|
94
|
+
|
|
95
|
+
{{RUN_TESTS}}
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Test count and coverage setup
|
|
99
|
+
find . -name '*.test.*' -o -name '*_test.*' -o -name '*spec.*' \
|
|
100
|
+
--exclude-dir=node_modules 2>/dev/null | wc -l
|
|
101
|
+
|
|
102
|
+
# Coverage config
|
|
103
|
+
cat .nycrc 2>/dev/null || cat vitest.config.* 2>/dev/null | head -20 || \
|
|
104
|
+
cat pytest.ini 2>/dev/null | head -20 || true
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
______________________________________________________________________
|
|
108
|
+
|
|
109
|
+
## Phase 6: CI/CD Pipeline
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# CI config
|
|
113
|
+
ls .github/workflows/ 2>/dev/null | head -10
|
|
114
|
+
cat .github/workflows/*.yml 2>/dev/null | head -80 || true
|
|
115
|
+
cat .gitlab-ci.yml 2>/dev/null | head -60 || true
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
______________________________________________________________________
|
|
119
|
+
|
|
120
|
+
## Phase 7: Technical Debt & Health
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Check for TODO/FIXME/HACK comments
|
|
124
|
+
grep -r -n "TODO\|FIXME\|HACK\|XXX\|DEPRECATED\|BUG" \
|
|
125
|
+
--include='*.ts' --include='*.py' --include='*.go' \
|
|
126
|
+
--exclude-dir=node_modules . 2>/dev/null | head -30
|
|
127
|
+
|
|
128
|
+
# Check for TODOS.md
|
|
129
|
+
cat TODOS.md 2>/dev/null | head -40 || true
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
______________________________________________________________________
|
|
133
|
+
|
|
134
|
+
## Discovery Report
|
|
135
|
+
|
|
136
|
+
Produce a structured summary:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
## Discovery Report — [project name] — [date]
|
|
140
|
+
|
|
141
|
+
### Overview
|
|
142
|
+
Purpose: [one paragraph]
|
|
143
|
+
Type: [API service / library / CLI / worker / ...]
|
|
144
|
+
Stack: [language, framework, runtime versions]
|
|
145
|
+
|
|
146
|
+
### Architecture
|
|
147
|
+
[Mermaid diagram of service topology or module structure when possible; ASCII fallback if needed]
|
|
148
|
+
|
|
149
|
+
### Data Stores
|
|
150
|
+
|
|
151
|
+
- [Database]: [what it stores, ORM/driver used]
|
|
152
|
+
- [Cache]: [what is cached, TTL strategy]
|
|
153
|
+
|
|
154
|
+
### Key External Dependencies
|
|
155
|
+
|
|
156
|
+
- [Service A]: [purpose, auth method]
|
|
157
|
+
- [Service B]: [purpose]
|
|
158
|
+
|
|
159
|
+
### API Surface
|
|
160
|
+
|
|
161
|
+
[Summarize endpoints or exported functions]
|
|
162
|
+
|
|
163
|
+
### Test Coverage
|
|
164
|
+
|
|
165
|
+
- Unit tests: [Y/N, count, coverage %]
|
|
166
|
+
- Integration tests: [Y/N]
|
|
167
|
+
- Contract tests: [Y/N]
|
|
168
|
+
|
|
169
|
+
### CI/CD
|
|
170
|
+
|
|
171
|
+
- CI: [GitHub Actions/GitLab CI/etc]
|
|
172
|
+
- Deploy target: [Fly.io/Render/K8s/etc]
|
|
173
|
+
- Release process: [manual/automated]
|
|
174
|
+
|
|
175
|
+
### Technical Debt
|
|
176
|
+
|
|
177
|
+
- [Key items from TODOS.md or code comments]
|
|
178
|
+
|
|
179
|
+
### Onboarding Notes
|
|
180
|
+
|
|
181
|
+
- How to run locally: [command]
|
|
182
|
+
- How to run tests: [command]
|
|
183
|
+
- Key config: [env vars]
|
|
184
|
+
- Gotchas: [anything that surprised me]
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: guardrails
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Activate safety guardrails for the current session. Before any destructive
|
|
5
|
+
command (rm -rf, DROP TABLE, git push --force, git reset --hard, kubectl delete,
|
|
6
|
+
production config changes, database migrations) a confirmation is required.
|
|
7
|
+
Use when asked to "be careful", "enable guardrails", or "careful mode".
|
|
8
|
+
disable-model-invocation: true
|
|
9
|
+
|
|
10
|
+
license: MIT
|
|
11
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
12
|
+
metadata:
|
|
13
|
+
owner: vstack
|
|
14
|
+
maturity: stable
|
|
15
|
+
argument-hint: '[task]'
|
|
16
|
+
user-invocable: true
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
# guardrails — Safety Mode
|
|
4
|
+
|
|
5
|
+
Activate careful mode for this session. Two behaviors are now enabled.
|
|
6
|
+
|
|
7
|
+
## Out of scope
|
|
8
|
+
|
|
9
|
+
- Code review or security audit (use `code-review` or `security`)
|
|
10
|
+
|
|
11
|
+
______________________________________________________________________
|
|
12
|
+
|
|
13
|
+
## Behavior 1: Careful Mode (always active after invoking this skill)
|
|
14
|
+
|
|
15
|
+
**Before executing any of the following commands, get explicit confirmation:**
|
|
16
|
+
|
|
17
|
+
| Command | Risk | What to confirm |
|
|
18
|
+
| ------------------------------ | ---------------------------- | --------------------------- |
|
|
19
|
+
| `rm -rf` | Permanent file deletion | Files to delete |
|
|
20
|
+
| `DROP TABLE` / `DROP DATABASE` | Permanent data loss | Table/database name |
|
|
21
|
+
| `git push --force` | Overwrites remote history | Branch and remote |
|
|
22
|
+
| `git reset --hard` | Discards local changes | What will be lost |
|
|
23
|
+
| `git clean -fd` | Removes untracked files | Files to remove |
|
|
24
|
+
| `kubectl delete` | Removes Kubernetes resources | Resource name and namespace |
|
|
25
|
+
| `fly destroy` | Destroys Fly.io app | App name |
|
|
26
|
+
| `docker rm -f` | Forcefully removes container | Container |
|
|
27
|
+
| Any `--force` flag | Bypasses safety check | Why force is needed |
|
|
28
|
+
| Production config changes | Affects live traffic | Explicit approval |
|
|
29
|
+
| Database migrations | May modify data schema | Review migration SQL |
|
|
30
|
+
|
|
31
|
+
**Procedure for each dangerous command:**
|
|
32
|
+
|
|
33
|
+
1. Stop.
|
|
34
|
+
1. Explain exactly what the command does and what will be permanently lost.
|
|
35
|
+
1. Ask for explicit confirmation.
|
|
36
|
+
1. Only proceed if the user says yes.
|
|
37
|
+
1. Never use workarounds to avoid this confirmation.
|
|
38
|
+
|
|
39
|
+
______________________________________________________________________
|
|
40
|
+
|
|
41
|
+
## How to Deactivate
|
|
42
|
+
|
|
43
|
+
Explicitly ask to "disable guardrails".
|
|
44
|
+
|
|
45
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: incident
|
|
2
|
+
version: 1.0.1
|
|
3
|
+
description: |
|
|
4
|
+
Incident analysis and post-mortem writing. Guides a structured investigation
|
|
5
|
+
from timeline reconstruction through root cause identification to a blameless
|
|
6
|
+
post-mortem document with action items. Use when asked to "write a post-mortem",
|
|
7
|
+
"incident review", "root cause analysis for this outage", "what went wrong?",
|
|
8
|
+
or "blameless post-mortem". Produces a docs/postmortems/{date}-{slug}.md.
|
|
9
|
+
argument-hint: '[incident or outage to analyse and document]'
|
|
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
|