@tekyzinc/gsd-t 2.50.10 → 2.50.12
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/CHANGELOG.md +11 -3
- package/commands/gsd-t-debug.md +46 -2
- package/commands/gsd-t-execute.md +56 -2
- package/commands/gsd-t-help.md +1 -1
- package/commands/gsd-t-init.md +7 -0
- package/commands/gsd-t-quick.md +46 -2
- package/docs/GSD-T-README.md +32 -10
- package/package.json +1 -1
- package/templates/stacks/_auth.md +324 -0
- package/templates/stacks/fastapi.md +377 -0
- package/templates/stacks/llm.md +541 -0
- package/templates/stacks/prisma.md +400 -0
- package/templates/stacks/queues.md +437 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,16 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
-
## [2.50.
|
|
5
|
+
## [2.50.12] - 2026-03-25
|
|
6
6
|
|
|
7
7
|
### Added
|
|
8
|
-
- **
|
|
8
|
+
- **23 new stack rule files** — python, flutter, tailwind, react-native, vite, nextjs, vue, docker, postgresql (with graph-in-SQL section), github-actions, rest-api, supabase, firebase, graphql, zustand, redux, neo4j, playwright, fastapi, llm (with RAG patterns section), prisma, queues, _auth (universal). Total: 27 stack rules (was 4).
|
|
9
|
+
- **`_auth.md`** (universal) — email-first registration, auth provider abstraction (Cognito/Firebase/Google), token management, password policy, session management, social auth/OAuth, email verification, MFA, authorization/RBAC, auth security, auth UI patterns.
|
|
10
|
+
- **`fastapi.md`** — dependency injection, Pydantic request/response models, lifespan events, BackgroundTasks, async patterns, auto-generated OpenAPI docs.
|
|
11
|
+
- **`llm.md`** — provider-agnostic LLM patterns: structured outputs, streaming, error/retry, token management, conversation state, tool/function calling, RAG patterns (chunking, embeddings, retrieval), prompt management, testing, cost/observability.
|
|
12
|
+
- **`prisma.md`** — schema modeling, migrations, typed client usage, relation queries, transactions, seeding, N+1 prevention.
|
|
13
|
+
- **`queues.md`** — BullMQ/Bull, SQS, RabbitMQ, Celery patterns: idempotent handlers, dead letter queues, retry/backoff, job deduplication, graceful shutdown.
|
|
9
14
|
- **Playwright best practices** — coverage matrix per feature, pairwise combinatorial testing, state transition testing, multi-step workflow testing, Page Object Model, API mocking patterns. Enforces rigorous test depth across permutations.
|
|
10
15
|
- **react.md expanded** — added state management decision table, form management (react-hook-form + zod), React naming conventions (3 new sections from external best practices review).
|
|
16
|
+
- **Project-level stack overrides** — `.gsd-t/stacks/` directory for per-project customization of global stack rules. Local files replace global files of the same name.
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
13
|
-
- Stack detection in execute, quick, and debug commands updated to cover all
|
|
19
|
+
- Stack detection in execute, quick, and debug commands updated to cover all 27 stack files with conditional detection per project dependencies.
|
|
20
|
+
- Detection refactored from one-liner to structured bash with `_sf()` (local override resolver) and `_add()` helper functions.
|
|
14
21
|
- PostgreSQL graph-in-SQL patterns (adjacency lists, junction tables, recursive CTEs) added to postgresql.md based on real project analysis.
|
|
22
|
+
- GSD-T-README.md stack detection table expanded to list all 27 files with their detection triggers.
|
|
15
23
|
|
|
16
24
|
## [2.46.11] - 2026-03-24
|
|
17
25
|
|
package/commands/gsd-t-debug.md
CHANGED
|
@@ -9,8 +9,52 @@ To give this debug session a fresh context window and prevent compaction, always
|
|
|
9
9
|
**If you are the orchestrating agent** (you received the slash command directly):
|
|
10
10
|
|
|
11
11
|
**Stack Rules Detection (before spawning subagent):**
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
|
|
13
|
+
Run via Bash to detect project stack and collect matching rules. Local overrides in `.gsd-t/stacks/` take precedence over global templates.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
GSD_T_DIR=$(npm root -g 2>/dev/null)/@tekyzinc/gsd-t
|
|
17
|
+
STACKS_DIR="$GSD_T_DIR/templates/stacks"
|
|
18
|
+
LOCAL_STACKS=".gsd-t/stacks"
|
|
19
|
+
STACK_RULES=""
|
|
20
|
+
_sf() { local n=$(basename "$1"); [ -f "$LOCAL_STACKS/$n" ] && cat "$LOCAL_STACKS/$n" || cat "$1"; }
|
|
21
|
+
_add() { [ -f "$STACKS_DIR/$1" ] && STACK_RULES="${STACK_RULES}$(_sf "$STACKS_DIR/$1")"$'\n\n'; }
|
|
22
|
+
if [ -d "$STACKS_DIR" ]; then
|
|
23
|
+
for f in "$STACKS_DIR"/_*.md; do [ -f "$f" ] && STACK_RULES="${STACK_RULES}$(_sf "$f")"$'\n\n'; done
|
|
24
|
+
if [ -f "package.json" ]; then
|
|
25
|
+
grep -q '"react-native"' package.json 2>/dev/null && _add react-native.md
|
|
26
|
+
grep -q '"react"' package.json 2>/dev/null && ! grep -q '"react-native"' package.json 2>/dev/null && _add react.md
|
|
27
|
+
grep -q '"next"' package.json 2>/dev/null && _add nextjs.md
|
|
28
|
+
grep -q '"vue"' package.json 2>/dev/null && _add vue.md
|
|
29
|
+
(grep -q '"typescript"' package.json 2>/dev/null || [ -f "tsconfig.json" ]) && _add typescript.md
|
|
30
|
+
grep -qE '"(express|fastify|hono|koa)"' package.json 2>/dev/null && _add node-api.md && _add rest-api.md
|
|
31
|
+
grep -q '"tailwindcss"' package.json 2>/dev/null && _add tailwind.md
|
|
32
|
+
grep -q '"vite"' package.json 2>/dev/null && _add vite.md
|
|
33
|
+
grep -q '"@supabase/supabase-js"' package.json 2>/dev/null && _add supabase.md
|
|
34
|
+
grep -q '"firebase"' package.json 2>/dev/null && _add firebase.md
|
|
35
|
+
grep -qE '"(graphql|@apollo/client|urql)"' package.json 2>/dev/null && _add graphql.md
|
|
36
|
+
grep -q '"zustand"' package.json 2>/dev/null && _add zustand.md
|
|
37
|
+
grep -q '"@reduxjs/toolkit"' package.json 2>/dev/null && _add redux.md
|
|
38
|
+
grep -q '"neo4j-driver"' package.json 2>/dev/null && _add neo4j.md
|
|
39
|
+
grep -qE '"(pg|prisma|drizzle-orm|knex)"' package.json 2>/dev/null && _add postgresql.md
|
|
40
|
+
grep -qE '"(prisma|@prisma/client)"' package.json 2>/dev/null && _add prisma.md
|
|
41
|
+
grep -qE '"(bullmq|bull|amqplib|@aws-sdk/client-sqs|bee-queue|agenda)"' package.json 2>/dev/null && _add queues.md
|
|
42
|
+
grep -qE '"(openai|anthropic|@anthropic-ai/sdk|langchain|llama-index|@google/generative-ai)"' package.json 2>/dev/null && _add llm.md
|
|
43
|
+
fi
|
|
44
|
+
([ -f "requirements.txt" ] || [ -f "pyproject.toml" ] || [ -f "Pipfile" ]) && _add python.md
|
|
45
|
+
([ -f "requirements.txt" ] && grep -q "psycopg" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "psycopg" pyproject.toml 2>/dev/null) && _add postgresql.md
|
|
46
|
+
([ -f "requirements.txt" ] && grep -q "neo4j" requirements.txt 2>/dev/null) && _add neo4j.md
|
|
47
|
+
([ -f "requirements.txt" ] && grep -q "fastapi" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "fastapi" pyproject.toml 2>/dev/null) && _add fastapi.md
|
|
48
|
+
([ -f "requirements.txt" ] && grep -qE "(celery|dramatiq|rq|arq)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(celery|dramatiq|rq|arq)" pyproject.toml 2>/dev/null) && _add queues.md
|
|
49
|
+
([ -f "requirements.txt" ] && grep -qE "(openai|anthropic|langchain|llama.index)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(openai|anthropic|langchain|llama.index)" pyproject.toml 2>/dev/null) && _add llm.md
|
|
50
|
+
[ -f "pubspec.yaml" ] && _add flutter.md
|
|
51
|
+
[ -f "Dockerfile" ] && _add docker.md
|
|
52
|
+
[ -d ".github/workflows" ] && _add github-actions.md
|
|
53
|
+
([ -f "playwright.config.ts" ] || [ -f "playwright.config.js" ]) && _add playwright.md
|
|
54
|
+
[ -f "go.mod" ] && _add go.md
|
|
55
|
+
[ -f "Cargo.toml" ] && _add rust.md
|
|
56
|
+
fi
|
|
57
|
+
```
|
|
14
58
|
|
|
15
59
|
If STACK_RULES is non-empty, append to the subagent prompt:
|
|
16
60
|
```
|
|
@@ -120,8 +120,62 @@ If rules fire: inject up to 10 lines of rule warnings into each task subagent pr
|
|
|
120
120
|
If no rules fire: log "No active rules for {domain-name}" and continue.
|
|
121
121
|
|
|
122
122
|
**Stack Rules Detection (before spawning subagent):**
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
|
|
124
|
+
Run via Bash to detect project stack and collect matching rules. Local overrides in `.gsd-t/stacks/` take precedence over global templates — if a project has `.gsd-t/stacks/react.md`, it replaces the global `react.md` for that project.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
GSD_T_DIR=$(npm root -g 2>/dev/null)/@tekyzinc/gsd-t
|
|
128
|
+
STACKS_DIR="$GSD_T_DIR/templates/stacks"
|
|
129
|
+
LOCAL_STACKS=".gsd-t/stacks"
|
|
130
|
+
STACK_RULES=""
|
|
131
|
+
|
|
132
|
+
# Helper: read local override if exists, else global
|
|
133
|
+
_sf() { local n=$(basename "$1"); [ -f "$LOCAL_STACKS/$n" ] && cat "$LOCAL_STACKS/$n" || cat "$1"; }
|
|
134
|
+
|
|
135
|
+
# Helper: append a stack file to STACK_RULES
|
|
136
|
+
_add() { [ -f "$STACKS_DIR/$1" ] && STACK_RULES="${STACK_RULES}$(_sf "$STACKS_DIR/$1")"$'\n\n'; }
|
|
137
|
+
|
|
138
|
+
if [ -d "$STACKS_DIR" ]; then
|
|
139
|
+
# Universal rules (_ prefix — always injected)
|
|
140
|
+
for f in "$STACKS_DIR"/_*.md; do [ -f "$f" ] && STACK_RULES="${STACK_RULES}$(_sf "$f")"$'\n\n'; done
|
|
141
|
+
|
|
142
|
+
# Package.json-based detection
|
|
143
|
+
if [ -f "package.json" ]; then
|
|
144
|
+
grep -q '"react-native"' package.json 2>/dev/null && _add react-native.md
|
|
145
|
+
grep -q '"react"' package.json 2>/dev/null && ! grep -q '"react-native"' package.json 2>/dev/null && _add react.md
|
|
146
|
+
grep -q '"next"' package.json 2>/dev/null && _add nextjs.md
|
|
147
|
+
grep -q '"vue"' package.json 2>/dev/null && _add vue.md
|
|
148
|
+
(grep -q '"typescript"' package.json 2>/dev/null || [ -f "tsconfig.json" ]) && _add typescript.md
|
|
149
|
+
grep -qE '"(express|fastify|hono|koa)"' package.json 2>/dev/null && _add node-api.md && _add rest-api.md
|
|
150
|
+
grep -q '"tailwindcss"' package.json 2>/dev/null && _add tailwind.md
|
|
151
|
+
grep -q '"vite"' package.json 2>/dev/null && _add vite.md
|
|
152
|
+
grep -q '"@supabase/supabase-js"' package.json 2>/dev/null && _add supabase.md
|
|
153
|
+
grep -q '"firebase"' package.json 2>/dev/null && _add firebase.md
|
|
154
|
+
grep -qE '"(graphql|@apollo/client|urql)"' package.json 2>/dev/null && _add graphql.md
|
|
155
|
+
grep -q '"zustand"' package.json 2>/dev/null && _add zustand.md
|
|
156
|
+
grep -q '"@reduxjs/toolkit"' package.json 2>/dev/null && _add redux.md
|
|
157
|
+
grep -q '"neo4j-driver"' package.json 2>/dev/null && _add neo4j.md
|
|
158
|
+
grep -qE '"(pg|prisma|drizzle-orm|knex)"' package.json 2>/dev/null && _add postgresql.md
|
|
159
|
+
grep -qE '"(prisma|@prisma/client)"' package.json 2>/dev/null && _add prisma.md
|
|
160
|
+
grep -qE '"(bullmq|bull|amqplib|@aws-sdk/client-sqs|bee-queue|agenda)"' package.json 2>/dev/null && _add queues.md
|
|
161
|
+
grep -qE '"(openai|anthropic|@anthropic-ai/sdk|langchain|llama-index|@google/generative-ai)"' package.json 2>/dev/null && _add llm.md
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
# File-based detection (no package.json needed)
|
|
165
|
+
([ -f "requirements.txt" ] || [ -f "pyproject.toml" ] || [ -f "Pipfile" ]) && _add python.md
|
|
166
|
+
([ -f "requirements.txt" ] && grep -q "psycopg" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "psycopg" pyproject.toml 2>/dev/null) && _add postgresql.md
|
|
167
|
+
([ -f "requirements.txt" ] && grep -q "neo4j" requirements.txt 2>/dev/null) && _add neo4j.md
|
|
168
|
+
([ -f "requirements.txt" ] && grep -q "fastapi" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "fastapi" pyproject.toml 2>/dev/null) && _add fastapi.md
|
|
169
|
+
([ -f "requirements.txt" ] && grep -qE "(celery|dramatiq|rq|arq)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(celery|dramatiq|rq|arq)" pyproject.toml 2>/dev/null) && _add queues.md
|
|
170
|
+
([ -f "requirements.txt" ] && grep -qE "(openai|anthropic|langchain|llama.index)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(openai|anthropic|langchain|llama.index)" pyproject.toml 2>/dev/null) && _add llm.md
|
|
171
|
+
[ -f "pubspec.yaml" ] && _add flutter.md
|
|
172
|
+
[ -f "Dockerfile" ] && _add docker.md
|
|
173
|
+
[ -d ".github/workflows" ] && _add github-actions.md
|
|
174
|
+
([ -f "playwright.config.ts" ] || [ -f "playwright.config.js" ]) && _add playwright.md
|
|
175
|
+
[ -f "go.mod" ] && _add go.md
|
|
176
|
+
[ -f "Cargo.toml" ] && _add rust.md
|
|
177
|
+
fi
|
|
178
|
+
```
|
|
125
179
|
|
|
126
180
|
If STACK_RULES is non-empty, append to the subagent prompt:
|
|
127
181
|
```
|
package/commands/gsd-t-help.md
CHANGED
|
@@ -258,7 +258,7 @@ Use these when user asks for help on a specific command:
|
|
|
258
258
|
- **Use when**: Ready to implement
|
|
259
259
|
- **Note (M22)**: Task-level fresh dispatch (one subagent per task, ~10-20% context each). Team mode uses worktree isolation (`isolation: "worktree"`) — zero file conflicts. Adaptive replanning between domain completions.
|
|
260
260
|
- **Note (M26)**: Active rule injection — evaluates declarative rules from rules.jsonl before dispatching each domain's tasks. Fires matching rules as warnings in subagent prompts.
|
|
261
|
-
- **Note (M29)**: Stack Rules Engine — auto-detects project tech stack from manifest files and injects mandatory best-practice rules into each task subagent prompt. Universal rules (`_security.md`) always apply; stack-specific rules layer on top. Violations are task failures (same weight as contract violations).
|
|
261
|
+
- **Note (M29)**: Stack Rules Engine — auto-detects project tech stack from manifest files and injects mandatory best-practice rules into each task subagent prompt. Universal rules (`_security.md`, `_auth.md`) always apply; stack-specific rules layer on top. Violations are task failures (same weight as contract violations).
|
|
262
262
|
|
|
263
263
|
### test-sync
|
|
264
264
|
- **Summary**: Keep tests aligned with code changes
|
package/commands/gsd-t-init.md
CHANGED
|
@@ -54,6 +54,8 @@ Skip the copy (step 2) silently if the target already exists.
|
|
|
54
54
|
│ └── .gitkeep
|
|
55
55
|
├── domains/
|
|
56
56
|
│ └── .gitkeep
|
|
57
|
+
├── stacks/
|
|
58
|
+
│ └── README.md
|
|
57
59
|
├── events/
|
|
58
60
|
├── backlog.md
|
|
59
61
|
├── backlog-settings.md
|
|
@@ -62,6 +64,11 @@ Skip the copy (step 2) silently if the target already exists.
|
|
|
62
64
|
└── qa-issues.md
|
|
63
65
|
```
|
|
64
66
|
|
|
67
|
+
Create `.gsd-t/stacks/` directory with a `README.md` explaining the override mechanism:
|
|
68
|
+
- This folder holds project-specific overrides of global stack rule files
|
|
69
|
+
- If a file with the same name as a global stack file exists here, it replaces the global version
|
|
70
|
+
- Folder stays empty until the developer explicitly adds overrides
|
|
71
|
+
|
|
65
72
|
Create `.gsd-t/events/` directory (empty — populated at runtime by heartbeat and event writer).
|
|
66
73
|
|
|
67
74
|
Create `token-log.md` with header row:
|
package/commands/gsd-t-quick.md
CHANGED
|
@@ -13,8 +13,52 @@ Before spawning — run via Bash:
|
|
|
13
13
|
`T_START=$(date +%s) && DT_START=$(date +"%Y-%m-%d %H:%M") && TOK_START=${CLAUDE_CONTEXT_TOKENS_USED:-0} && TOK_MAX=${CLAUDE_CONTEXT_TOKENS_MAX:-200000}`
|
|
14
14
|
|
|
15
15
|
**Stack Rules Detection (before spawning subagent):**
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
|
|
17
|
+
Run via Bash to detect project stack and collect matching rules. Local overrides in `.gsd-t/stacks/` take precedence over global templates.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
GSD_T_DIR=$(npm root -g 2>/dev/null)/@tekyzinc/gsd-t
|
|
21
|
+
STACKS_DIR="$GSD_T_DIR/templates/stacks"
|
|
22
|
+
LOCAL_STACKS=".gsd-t/stacks"
|
|
23
|
+
STACK_RULES=""
|
|
24
|
+
_sf() { local n=$(basename "$1"); [ -f "$LOCAL_STACKS/$n" ] && cat "$LOCAL_STACKS/$n" || cat "$1"; }
|
|
25
|
+
_add() { [ -f "$STACKS_DIR/$1" ] && STACK_RULES="${STACK_RULES}$(_sf "$STACKS_DIR/$1")"$'\n\n'; }
|
|
26
|
+
if [ -d "$STACKS_DIR" ]; then
|
|
27
|
+
for f in "$STACKS_DIR"/_*.md; do [ -f "$f" ] && STACK_RULES="${STACK_RULES}$(_sf "$f")"$'\n\n'; done
|
|
28
|
+
if [ -f "package.json" ]; then
|
|
29
|
+
grep -q '"react-native"' package.json 2>/dev/null && _add react-native.md
|
|
30
|
+
grep -q '"react"' package.json 2>/dev/null && ! grep -q '"react-native"' package.json 2>/dev/null && _add react.md
|
|
31
|
+
grep -q '"next"' package.json 2>/dev/null && _add nextjs.md
|
|
32
|
+
grep -q '"vue"' package.json 2>/dev/null && _add vue.md
|
|
33
|
+
(grep -q '"typescript"' package.json 2>/dev/null || [ -f "tsconfig.json" ]) && _add typescript.md
|
|
34
|
+
grep -qE '"(express|fastify|hono|koa)"' package.json 2>/dev/null && _add node-api.md && _add rest-api.md
|
|
35
|
+
grep -q '"tailwindcss"' package.json 2>/dev/null && _add tailwind.md
|
|
36
|
+
grep -q '"vite"' package.json 2>/dev/null && _add vite.md
|
|
37
|
+
grep -q '"@supabase/supabase-js"' package.json 2>/dev/null && _add supabase.md
|
|
38
|
+
grep -q '"firebase"' package.json 2>/dev/null && _add firebase.md
|
|
39
|
+
grep -qE '"(graphql|@apollo/client|urql)"' package.json 2>/dev/null && _add graphql.md
|
|
40
|
+
grep -q '"zustand"' package.json 2>/dev/null && _add zustand.md
|
|
41
|
+
grep -q '"@reduxjs/toolkit"' package.json 2>/dev/null && _add redux.md
|
|
42
|
+
grep -q '"neo4j-driver"' package.json 2>/dev/null && _add neo4j.md
|
|
43
|
+
grep -qE '"(pg|prisma|drizzle-orm|knex)"' package.json 2>/dev/null && _add postgresql.md
|
|
44
|
+
grep -qE '"(prisma|@prisma/client)"' package.json 2>/dev/null && _add prisma.md
|
|
45
|
+
grep -qE '"(bullmq|bull|amqplib|@aws-sdk/client-sqs|bee-queue|agenda)"' package.json 2>/dev/null && _add queues.md
|
|
46
|
+
grep -qE '"(openai|anthropic|@anthropic-ai/sdk|langchain|llama-index|@google/generative-ai)"' package.json 2>/dev/null && _add llm.md
|
|
47
|
+
fi
|
|
48
|
+
([ -f "requirements.txt" ] || [ -f "pyproject.toml" ] || [ -f "Pipfile" ]) && _add python.md
|
|
49
|
+
([ -f "requirements.txt" ] && grep -q "psycopg" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "psycopg" pyproject.toml 2>/dev/null) && _add postgresql.md
|
|
50
|
+
([ -f "requirements.txt" ] && grep -q "neo4j" requirements.txt 2>/dev/null) && _add neo4j.md
|
|
51
|
+
([ -f "requirements.txt" ] && grep -q "fastapi" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -q "fastapi" pyproject.toml 2>/dev/null) && _add fastapi.md
|
|
52
|
+
([ -f "requirements.txt" ] && grep -qE "(celery|dramatiq|rq|arq)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(celery|dramatiq|rq|arq)" pyproject.toml 2>/dev/null) && _add queues.md
|
|
53
|
+
([ -f "requirements.txt" ] && grep -qE "(openai|anthropic|langchain|llama.index)" requirements.txt 2>/dev/null || [ -f "pyproject.toml" ] && grep -qE "(openai|anthropic|langchain|llama.index)" pyproject.toml 2>/dev/null) && _add llm.md
|
|
54
|
+
[ -f "pubspec.yaml" ] && _add flutter.md
|
|
55
|
+
[ -f "Dockerfile" ] && _add docker.md
|
|
56
|
+
[ -d ".github/workflows" ] && _add github-actions.md
|
|
57
|
+
([ -f "playwright.config.ts" ] || [ -f "playwright.config.js" ]) && _add playwright.md
|
|
58
|
+
[ -f "go.mod" ] && _add go.md
|
|
59
|
+
[ -f "Cargo.toml" ] && _add rust.md
|
|
60
|
+
fi
|
|
61
|
+
```
|
|
18
62
|
|
|
19
63
|
If STACK_RULES is non-empty, append to the subagent prompt:
|
|
20
64
|
```
|
package/docs/GSD-T-README.md
CHANGED
|
@@ -231,20 +231,42 @@ GSD-T auto-detects your project's tech stack and injects mandatory best-practice
|
|
|
231
231
|
### How It Works
|
|
232
232
|
|
|
233
233
|
1. At subagent spawn time, GSD-T reads project manifest files to detect the active stack(s).
|
|
234
|
-
2. Universal rules (`templates/stacks/_security.md`) are **always** injected.
|
|
234
|
+
2. Universal rules (`templates/stacks/_security.md`, `_auth.md`) are **always** injected.
|
|
235
235
|
3. Stack-specific rules are injected when the corresponding stack is detected.
|
|
236
|
-
4.
|
|
236
|
+
4. Project-level overrides in `.gsd-t/stacks/` replace global files of the same name.
|
|
237
|
+
5. Rules are appended to the subagent prompt as a `## Stack Rules (MANDATORY)` section.
|
|
237
238
|
|
|
238
|
-
### Stack Detection
|
|
239
|
+
### Stack Detection (27 files)
|
|
239
240
|
|
|
240
|
-
| Project File | Detected Stack |
|
|
241
|
+
| Project File | Detected Stack(s) |
|
|
241
242
|
|---|---|
|
|
242
|
-
| `
|
|
243
|
-
| `package.json` with `"
|
|
244
|
-
| `package.json` with `"
|
|
245
|
-
| `
|
|
246
|
-
| `
|
|
247
|
-
| `
|
|
243
|
+
| *(always)* | `_security.md`, `_auth.md` |
|
|
244
|
+
| `package.json` with `"react"` | `react.md` |
|
|
245
|
+
| `package.json` with `"react-native"` | `react-native.md` |
|
|
246
|
+
| `package.json` with `"next"` | `nextjs.md` |
|
|
247
|
+
| `package.json` with `"vue"` | `vue.md` |
|
|
248
|
+
| `package.json` with `"typescript"` or `tsconfig.json` | `typescript.md` |
|
|
249
|
+
| `package.json` with `"tailwindcss"` | `tailwind.md` |
|
|
250
|
+
| `package.json` with `"express"`, `"fastify"`, `"hono"`, or `"koa"` | `node-api.md`, `rest-api.md` |
|
|
251
|
+
| `package.json` with `"vite"` | `vite.md` |
|
|
252
|
+
| `package.json` with `"@supabase/supabase-js"` | `supabase.md` |
|
|
253
|
+
| `package.json` with `"firebase"` | `firebase.md` |
|
|
254
|
+
| `package.json` with `"graphql"` or `"@apollo/server"` | `graphql.md` |
|
|
255
|
+
| `package.json` with `"zustand"` | `zustand.md` |
|
|
256
|
+
| `package.json` with `"@reduxjs/toolkit"` | `redux.md` |
|
|
257
|
+
| `package.json` with `"prisma"` or `"@prisma/client"` | `prisma.md` |
|
|
258
|
+
| `package.json` with `"pg"`, `"knex"`, or `"drizzle-orm"` | `postgresql.md` |
|
|
259
|
+
| `package.json` with `"neo4j-driver"` | `neo4j.md` |
|
|
260
|
+
| `package.json` with `"bullmq"`, `"bull"`, `"amqplib"`, or `"@aws-sdk/client-sqs"` | `queues.md` |
|
|
261
|
+
| `package.json` with `"openai"`, `"anthropic"`, `"langchain"` | `llm.md` |
|
|
262
|
+
| `Dockerfile` or `compose.yaml` | `docker.md` |
|
|
263
|
+
| `.github/workflows/*.yml` | `github-actions.md` |
|
|
264
|
+
| `playwright.config.*` | `playwright.md` |
|
|
265
|
+
| `requirements.txt` or `pyproject.toml` | `python.md` |
|
|
266
|
+
| `requirements.txt` with `fastapi` | `fastapi.md` |
|
|
267
|
+
| `requirements.txt` with `celery`, `dramatiq`, `rq`, or `arq` | `queues.md` |
|
|
268
|
+
| `requirements.txt` with `openai`, `anthropic`, `langchain` | `llm.md` |
|
|
269
|
+
| `pubspec.yaml` | `flutter.md` |
|
|
248
270
|
|
|
249
271
|
### Commands That Inject Stack Rules
|
|
250
272
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "2.50.
|
|
3
|
+
"version": "2.50.12",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code — 51 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
|
|
5
5
|
"author": "Tekyz, Inc.",
|
|
6
6
|
"license": "MIT",
|