后端安装
- 作者仓库星标 0
- 作者更新于 实时读取
- 作者仓库 skills-registry
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 83 / 100 · 社区维护
- 作者 / 版本 / 许可
- @tomevault-io · 未声明 license
- Token 消耗评级
- 中等消耗
- 接入复杂程度
- 需手动接入
- 是否需要外部 API Key
- 需要 · Vendor-specific
- 兼容的系统
- Docker
- 底层运行要求
- Node.js · Python · Docker
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 读取环境变量
- 网络行为
- 允许外网请求
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。;检出高风险片段:pipe_curl_to_shell
---
name: setup
description: > Use when this capability is needed. Run /setup when cloning this starter kit for a new project…
category: 通用
runtime: Node.js / Python / Docker
---
# setup 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“When to use / Instructions / Phase A: Get Runnable”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“When to use / Instructions / Phase A: Get Runnable”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、执行终端命令、读取环境变量、会按任务需要访问外部网络、需要准备 Vendor-specific API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件、执行终端命令、读取环境变量;会按任务需要访问外部网络;需要准备 Vendor-specific API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文出现了 `/setup`、`/office-hours`、`/tech-stack-consult`、`/api`、`/jobs` 这类斜杠命令;如果你的 Agent 支持命令触发,优先用命令开场,再补充目标和边界。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件、执行终端命令、读取环境变量。
先用一个小任务确认它会围绕“When to use / Instructions / Phase A: Get Runnable”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: setup
description: > Use when this capability is needed. Run /setup when cloning this starter kit for a new project…
category: 通用
source: tomevault-io/skills-registry
---
# setup
## 什么时候使用
- 把通用方向的常用动作沉淀成 Agent 可调用的技能 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续迭代的步骤;使用前要准备…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「When to use / Instructions / Phase A: Get Runnable」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件、执行终端命令、读取环境变量;会按任务需要访问外部网络;需要准备 Vendor-specific API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "setup" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> When to use / Instructions / Phase A: Get Runnable
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Node.js / Python / Docker | 读取文件、写入/修改文件、执行终端命令、读取环境变量 | 会按任务需要访问外部网络
安全层 -> 需要准备 Vendor-specific API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} /setup — Project Onboarding
Progressive setup for new projects using this starter kit. Starts with infrastructure, then hands off to gStack for product planning.
When to use
Run /setup when cloning this starter kit for a new project.
Instructions
You are helping a solo developer set up a new project from the agStack starter kit. The setup is split into two phases:
- Phase A (this skill): Get the project RUNNABLE — infra, deps, dev server.
- Phase B (gStack): Plan the product and build features via
/office-hours.
Phase A should be fast — get to a working npm run dev ASAP.
Phase B is where the real product decisions happen.
Before Phase A: check the stack profile. If .agstack/stack.json does not
exist, run /tech-stack-consult first. Without a profile, /setup assumes
nestjs-only (NestJS + BullMQ, no Rust). See Step 0.5 below.
CRITICAL — DO NOT regenerate boilerplate code. COPY + REPLACE only.
The starter kit ships with EVERYTHING pre-built and tested, including pinned dependency versions. /setup should NOT write any file from scratch. The ONLY things /setup does:
- Copy
.templatefiles → real files (package.json.template → package.json) - Replace
__PROJECT_NAME__placeholder with actual project name - Install Shadcn components (npm-installed, not in boilerplate)
- Fix Sonner next-themes import (Shadcn bug)
- Run prisma migrate
Pre-built files that MUST NOT be regenerated (saves ~5000 tokens each run):
- API: main.ts, app.module.ts, prisma.service.ts, base-crud.service/controller, health module, interceptors, filters, DTOs
- Frontend: main.tsx, providers.tsx, router.tsx, layout.tsx, home.tsx, api-client.ts, form-utils.ts, query-keys.ts, utils.ts, globals.css, use-paginated-query.ts, use-api-mutation.ts, use-debounce.ts, test utils
- Config: vite.config.ts, tailwind.config.ts, postcss.config.js, components.json, tsconfig.json (root, frontend, api, shared), vitest.config.ts, jest.config.ts, jest.e2e.config.ts, nest-cli.json, biome.json, lefthook.yml, docker-compose.yml, .env.example
- Shared: types/job-envelope.ts, constants/job-types.ts
If /setup rewrites ANY of these, it's wasting tokens and risking regressions.
Phase A: Get Runnable
Follow these steps IN ORDER. Ask one section at a time. Wait for user confirmation before proceeding.
Step 0: Trust But Verify + Install gStack
Before writing any code, help the user verify the repo and install required tools.
Security scan — "don't trust, verify":
Tell the user:
"Before we start, let's verify this repo is safe. Run a quick security scan:"
# Scan for secrets, credentials, or suspicious content
npx @anthropic-ai/claude-code-security-scanner . 2>/dev/null || echo "Scanner not available — manual review recommended"
# Quick manual checks
grep -r "eval(" --include="*.ts" --include="*.js" . | head -20
grep -r "exec(" --include="*.ts" --include="*.js" . | head -20
grep -rn "password\|secret\|token\|api_key" .env* 2>/dev/null
If the security scanner is not available, suggest manual review:
"No automated scanner found. You can review the repo yourself:
- Check
scripts/for anything unexpected- Check
.claude/for suspicious hooks or skills- Check
package.jsonfor unknown dependencies- Run
git log --oneline -20to see recent commit historyWhen you're satisfied, confirm and we'll continue."
Wait for user confirmation before proceeding.
Install gStack globally:
First, check if gStack is already installed globally:
# Check global install location
ls ~/.claude/skills/gstack/SKILL.md 2>/dev/null && echo "FOUND" || echo "NOT_FOUND"
If FOUND — skip installation, tell the user:
"gStack is already installed globally. Skipping installation."
If NOT_FOUND — install globally:
mkdir -p ~/.claude/skills
cd ~/.claude/skills && git clone https://github.com/garrytan/gstack.git && cd gstack && ./setup
Tell the user:
"gStack is now installed globally at
~/.claude/skills/gstack/. It will be available across all your projects — not just this one. This gives you product planning (/office-hours), code review (/review), QA (/qa), and deployment (/ship) skills."
If the install fails, suggest:
"gStack install failed. Try manually:
mkdir -p ~/.claude/skills cd ~/.claude/skills && git clone https://github.com/garrytan/gstack.git && cd gstack && ./setupOr check https://github.com/garrytan/gstack for instructions."
Step 0.5: Stack Profile
Check whether the user has run /tech-stack-consult:
cat .agstack/stack.json 2>/dev/null || echo "NO_PROFILE"
If .agstack/stack.json exists — load the profile field and hold it in
memory for the rest of setup. Tell the user:
"Using stack profile:
<profile>. I'll scaffold based on your tech-stack-consult decision."
Valid profiles:
nestjs-only— default, NestJS + BullMQ worker inside NestJS for jobsnestjs-rust— NestJS + separate Rust worker for CPU-heavy jobsgo-only— frontend only; remove /api, /jobs, /shared. User writes Go backend.python-only— frontend only; remove /api, /jobs, /shared. User writes Python backend.
If it doesn't exist — surface the tradeoff:
"No stack profile found. /setup will default to
nestjs-only(NestJS + BullMQ worker — no Rust). This is the simplest full-stack option: 1 Node runtime, 1 Dockerfile, 1 CI pipeline.Options:
- Run
/tech-stack-consultfirst (5 questions, ~2 min) to evaluate all profiles, then re-run/setup- Proceed with
nestjs-onlydefaultWhich do you want?"
Wait for user response. If they pick (1), stop the skill and ask them to run
/tech-stack-consult. If they pick (2), set profile = "nestjs-only" in memory
and continue.
Record the active profile in the session — you'll apply it in Step 2.5.
Step 1: Project Identity
Ask the user:
- Project name (kebab-case, for package.json)
- One-line description (what does this product do?)
- Team mode: Solo (1 dev + AI agents) or Team (multiple devs + AI agents)?
Then update CLAUDE.md:
- Replace
## Team Mode: [solo | team]with the user's choice - If Team:
mainbranch will be protected, PRs required, file claims enabled - If Solo: lightweight workflow, direct push to main OK
Then:
Update
CLAUDE.md— replace[Project Name]with actual name, replace[Brief description]with actual descriptionCreate package.json files from templates (DO NOT write from scratch): The boilerplate ships
.templatefiles with ALL versions already pinned. You only need to copy and replace__PROJECT_NAME__:# Copy templates → real files cp package.json.template package.json cp frontend/package.json.template frontend/package.json cp api/package.json.template api/package.json # Replace project name placeholder in all three sed -i "s/__PROJECT_NAME__/<actual-project-name>/g" package.json frontend/package.json api/package.jsonThat's it. All dependency versions are pre-resolved and tested in the templates. DO NOT run
npm viewor change any version numbers. Version upgrades are managed centrally through agStack releases.Create shared/package.json (no template needed — it's tiny):
{ "name": "<project-name>-shared", "version": "0.1.0", "private": true, "main": "./types/index.ts", "types": "./types/index.ts" }Set up .env:
.env.exampleanddocker-compose.ymlalready exist with__PROJECT_NAME__placeholder. Replace it:sed -i "s/__PROJECT_NAME__/<actual-project-name>/g" .env.example docker-compose.yml \ frontend/index.html frontend/src/app/layout.tsx frontend/src/pages/home.tsxThen auto-copy
.env.example→.envif.envdoes not exist.Tell the user: "
.envhas been created with dev defaults. Review and adjust if needed, then confirm when ready." Wait for user confirmation before proceeding.Run
npm installfrom root to link workspaces and install all dependencies.
Step 2: Infrastructure
All infrastructure files are pre-existing in the boilerplate. Verify — do NOT regenerate:
docker-compose.yml— ALREADY EXISTS. ReadsPOSTGRES_DBfrom.env. DO NOT regenerate. Only verify it's present.api/prisma/schema.prisma— ALREADY EXISTS (empty, no models yet). DO NOT regenerate. Domain models come from sprint tasks in Phase B.Prisma 7+ compatibility (only if template pinning failed): After
npm install, checknpx prisma --version. If somehow Prisma 7+ got installed: a. Removeurlline fromdatasource db {}in schema.prisma b. Createapi/prisma/prisma.config.tswithdefineConfigpointing to env DATABASE_URL c. Addoutput = "../node_modules/.prisma/client"togenerator client {}If Prisma 6 (expected) — no changes needed.frontend/vite.config.ts— ALREADY EXISTS with@and@sharedresolve aliases.frontend/tailwind.config.ts,postcss.config.js,components.json— ALL pre-existing. DO NOT regenerate any of these.
Before running docker, check for port conflicts:
lsof -i :5432 2>/dev/null | head -5 # check if postgres port is in use
lsof -i :6379 2>/dev/null | head -5 # check if redis port is in use
If ports are in use, warn the user:
"Port 5432 (or 6379) is already in use — you may have a local postgres/redis running. Either stop it or change the port in
.envanddocker-compose.yml."
Then ask user to run:
docker-compose up -d
docker compose ps # verify both services are running
# Prisma reads .env from its own directory (api/), but .env lives at root.
# Symlink it so Prisma can find DATABASE_URL:
cd api && ln -sf ../.env .env
npx prisma migrate dev --name init # from api/ folder
If prisma migrate fails, check:
P1012: Environment variable not found: DATABASE_URL? → Prisma reads.envfromapi/, not root. Symlink:cd api && ln -sf ../.env .env- Is
.envpresent in root? (cp .env.example .envif not) - Does DATABASE_URL in
.envmatch docker-compose credentials? - Is postgres actually ready? (
docker compose logs postgres | tail -5) - Prisma 7 error "datasource property
urlis no longer supported"? → Follow the Prisma 7 compatibility steps above (remove url from schema, create prisma.config.ts)
Step 2.5: Apply Stack Profile
Now apply the profile chosen in Step 0.5. This adjusts the scaffold BEFORE installing npm deps for frontend/api, so nothing that depends on the removed parts gets installed.
If profile == nestjs-only — this is the default. No /jobs folder exists
in the repo, so there's nothing to remove. Just set up the BullMQ worker:
Tell the user:
"Applying
nestjs-onlyprofile (default): setting up BullMQ worker inside NestJS."
Then:
Copy the BullMQ worker template into the NestJS app:
cp -r templates/worker-bullmq/src/workers api/src/workersThen register
WorkersModuleinAppModule. The user can follow thetypescript-nestjsskill's BullMQ section to add real processors.Remove Rust-specific env vars from
.env.exampleand.env(if present):RUST_LOGWORKER_CONCURRENCY
Update
CLAUDE.mdProject Structure: remove the- /jobsline if present.
If profile == nestjs-rust:
Tell the user:
"Applying
nestjs-rustprofile: copying Rust worker from templates."
Then:
Copy the Rust worker template to project root:
cp -r templates/jobs-rust jobsAdd Rust-specific env vars to
.envand.env.example(if not already present):RUST_LOG=infoWORKER_CONCURRENCY=4
Add a
jobs:service todocker-compose.ymlif not already present (build fromjobs/, depends on redis + postgres).Verify Rust toolchain is installed:
rustc --version || echo "Rust not installed — run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh"
If profile == go-only OR python-only:
The team is not writing a NestJS backend. agStack ships the React frontend; you own the backend in Go or Python.
Let LANG = "Go" if profile == go-only, otherwise "Python".
Let WORKDIR = backend-go if profile == go-only, otherwise backend-python.
Tell the user:
"Applying
<profile>profile: keeping /frontend only. Removing /api (NestJS), /jobs (Rust), and /shared (TS types) — you'll write your backend in. I'll leave a README in <WORKDIR>/with the suggested layout."
Then:
Remove TS-backend folders:
rm -rf api/ jobs/ shared/Remove TS-backend references from
docker-compose.yml:- Delete the
jobs:service (if present) - Keep
postgres:andredis:— user's backend will use them - Do NOT add a service for the user's backend — they run it outside Docker until they decide how to package it.
- Delete the
Remove TS-backend env vars from
.env.exampleand.env:JWT_SECRET,JWT_EXPIRES_IN(NestJS-specific)RUST_LOG,WORKER_CONCURRENCY- KEEP
DATABASE_URLandREDIS_URL— user's backend needs these
Create
<WORKDIR>/README.mdwith a suggested layout. Use exactly this template:For
go-only(backend-go/README.md):# Backend (Go) agStack provides the React frontend. You own this Go backend. ## Suggested layout - `cmd/api/main.go` — HTTP server entry point - `internal/handlers/` — HTTP handlers - `internal/models/` — domain types - `internal/db/` — Postgres access (pgx or sqlx) - `internal/queue/` — Redis queue consumer (optional) ## Suggested libraries - Router: chi, gin, or net/http - DB: pgx or sqlx - Queue: asynq (Redis-backed job queue — matches frontend expectations) ## Frontend integration The frontend expects `VITE_API_URL` (see `frontend/.env`) to point at this service. Default: `http://localhost:3000/api/v1`. ## Docker `docker-compose.yml` in the repo root provides Postgres + Redis. Run:docker-compose up -d
Then start your Go service separately on port 3000 (or change `VITE_API_URL`).For
python-only(backend-python/README.md):# Backend (Python) agStack provides the React frontend. You own this Python backend. ## Suggested layout - `app/main.py` — FastAPI/Django entry point - `app/routers/` or `app/views/` — HTTP routes - `app/models/` — Pydantic / Django models - `app/db/` — Postgres access (SQLAlchemy / Django ORM) - `app/workers/` — Celery / RQ / Dramatiq tasks (optional) ## Suggested stacks - FastAPI + SQLAlchemy + Celery - Django + Django REST + RQ ## Frontend integration The frontend expects `VITE_API_URL` (see `frontend/.env`) to point at this service. Default: `http://localhost:3000/api/v1`. ## Docker `docker-compose.yml` in the repo root provides Postgres + Redis. Run:docker-compose up -d
Then start your Python service separately on port 3000 (or change `VITE_API_URL`).Update
frontend/.env(or.env.examplefor frontend) soVITE_API_URLis clearly a placeholder — prepend a comment:# Your <LANG> backend URL. agStack does not scaffold this backend. VITE_API_URL=http://localhost:3000/api/v1Update
CLAUDE.md— major surgery since the TS backend is gone:- Delete the
### Backend API (/api)subsection from## Tech Stack - Delete the
### Job Worker (/jobs)subsection from## Tech Stack - In
## Project Structure:- Delete
- /api,- /jobs,- /sharedbullets - Add
- /<WORKDIR> — YOUR <LANG> backend (not scaffolded by agStack)
- Delete
- Delete the
### Backend NestJSsection from## Coding Conventions - Delete the
### Backend NestJS — Shared Code Maptable - Delete the
### Rust Jobs — Shared Code Maptable - Delete the
### Rust Jobs (/jobs)section - Delete the
## API Conventionssection (user defines their own) - Delete the
## Job Queue Conventionssection - In
## Multi-Agent Rules→Spawn order: note thatagent-apiandagent-jobsdo not apply here - In
## Key Decisions: delete references to ADR 002 (Rust) and leave a note pointing todocs/decisions/000-tech-stack.md - Leave
.claude/agents/agent-api.mdandagent-jobs.mdon disk (inert) but add a line at the top of CLAUDE.md's agents section:> Note: agent-api and agent-jobs are disabled for this project (non-TS backend).
- Delete the
Scaffold step — after removing everything, the repo still needs to be runnable for frontend-only development. Run the frontend npm install ONLY (skip api/jobs steps below in later /setup sections):
cd frontend && npm installThen install backend dependencies for the user's stack:
go-only:cd backend-go && go mod tidy(generates go.sum)python-only:cd backend-python && pip install -e ".[dev]"
Do NOT run
npx prisma migrateor any NestJS-related steps — they no longer apply. Skip Step 2's Prisma section entirely if profile isgo-onlyorpython-only.
Flag for the user:
"Your backend is OUT OF SCOPE for agStack skills — /review, /qa, /ship assume a NestJS API. Those skills will still work for the frontend, but any backend QA/review is on you."
After applying the profile, run git status and show the user what changed
before continuing to Step 3.
Step 3: App Shell + Shadcn Components
EVERYTHING below is pre-existing in the boilerplate. DO NOT regenerate ANY of these files:
Backend (all pre-built):
api/src/main.ts— NestJS bootstrap with Swagger, CORS, global pipes/filtersapi/src/app.module.ts— Root module importing HealthModuleapi/src/common/prisma.service.ts— NestJS-managed PrismaClientapi/nest-cli.json— NestJS CLI config- All common infrastructure, health module, DTOs, filters, interceptors
Frontend (all pre-built):
frontend/index.html— Vite entry HTML (has__PROJECT_NAME__in title)frontend/src/app/main.tsx— React entry pointfrontend/src/app/providers.tsx— QueryClient providerfrontend/src/app/router.tsx— React Router (home + 404)frontend/src/app/layout.tsx— Layout shell (has__PROJECT_NAME__in header)frontend/src/pages/home.tsx— Home page (has__PROJECT_NAME__in heading)frontend/src/lib/utils.ts— Shadcn cn() utilityfrontend/src/styles/globals.css— Tailwind base + CSS variablesfrontend/src/lib/form-utils.ts,api-client.ts, all hooks, all features
The ONLY things /setup does here are:
(__PROJECT_NAME__ replacement is already done in Step 1 via the sed command.)
Install Shadcn components (these are npm-installed, not in boilerplate):
cd frontend && npx shadcn@latest add button input label separator sonnerFix Sonner component — Shadcn's default
sonner.tsximportsuseThemefromnext-themeswhich does NOT exist in Vite projects. After installing, editfrontend/src/components/ui/sonner.tsx:- Remove the
import { useTheme } from "next-themes"line - Remove the
const { theme = "system" } = useTheme()line - Replace
theme={theme as ToasterProps["theme"]}withtheme="light"This is a known Shadcn issue — their default template assumes Next.js.
- Remove the
Run
bash scripts/sync-components.shto update COMPONENTS.md
Ask user to run npm run dev and verify both frontend (:5173) and API (:3000) are working.
Step 4: Verify & Hand Off
Once everything runs:
- Run
npx @biomejs/biome check .to verify code quality - Run TypeScript typecheck on frontend + api
- Summarize what's been set up
Then tell the user (in their preferred language):
Setup complete! Project is up and running.
If you have existing research, prototypes, or reference code, drop them in the
materials/folder now. Claude will review them during/office-hoursso you don't have to explain everything from scratch.Next step: run
/office-hoursto plan your product. gStack will scanmaterials/and ask about your product vision, target users, and core features, then generate a PRD. From there:
/office-hours→/plan-ceo-review→/plan-eng-review→/plan-sprint
/plan-sprintconverts your eng review into Epics, Tasks, and a Sprint backlog so Claude knows exactly what to build and in what order.Useful gStack skills:
/office-hours— define product, create PRD/plan-eng-review— validate architecture/plan-sprint— create epics, tasks, sprint backlog/design-consultation— discuss UX/UI approach/review→/qa→/ship— daily dev workflow
Phase B: Build Product (via gStack)
Phase B is NOT part of this skill. It happens organically through gStack skills. But here's the expected flow for reference:
/office-hours → Define product, create PRD
/plan-ceo-review → Validate product direction
/plan-eng-review → Validate architecture for the features planned
/plan-sprint → Create Epics + Tasks in BACKLOG.md, populate SPRINT.md
/plan-design-review → Validate UX approach
Then sprint by sprint:
code feature → Follow patterns in skills (typescript-nestjs, frontend-ui)
/review → Code review
/qa → Test
/ship → Ship to staging/production
/retro → Sprint retrospective
Common product decisions handled in Phase B
These are decisions that /office-hours and sprint planning will resolve:
| Decision | Depends on product | NOT in /setup |
|---|---|---|
| Auth (yes/no, method) | Blog = no auth. SaaS = JWT. Internal tool = SSO | /office-hours decides |
| Database schema | Based on PRD entities | Sprint task |
| App layout (sidebar/nav) | Admin panel = sidebar. Landing = top nav. Dashboard = both | /design-consultation decides |
| Roles & permissions | Some MVPs have none. SaaS = admin/user. Marketplace = buyer/seller | /office-hours decides |
| Deploy target | Depends on budget, scale, team | /setup-deploy handles when ready |
| Background jobs runner | Driven by stack profile (see .agstack/stack.json) |
/tech-stack-consult decides |
gStack Integration
Use gStack skills throughout the process:
| Situation | gStack skill | Why |
|---|---|---|
| Something fails during setup | /investigate |
Debug with full context |
| Need to research a library | /browse |
Web browsing (NEVER use mcp__claude-in-chrome__* tools) |
| Generating security-critical code | /careful |
Extra review and caution |
| Code review after generating | /review |
Validate quality |
| Ready to test | /qa |
Full test suite |
| Ready to ship | /ship or /land-and-deploy |
Deploy flow |
| After all features done | /document-release |
Auto-generate docs |
Rules for this skill
- ALWAYS ask ONE section at a time. Never dump all questions at once.
- After generating files, ALWAYS ask user to verify they work before proceeding.
- If something fails, use
/investigateto debug, then fix before moving on. - Communicate in the user's preferred language. All generated code, comments, and docs MUST be in English.
- Reference existing conventions — don't invent new patterns.
- If user says "skip" for any step, skip it and move to next.
- Phase A should be FAST — max 4 steps to a running dev server.
- DO NOT make product decisions (auth, schema, layout) — that's Phase B via
/office-hours. - DO NOT generate business features — real features come from sprint plan. Skills teach the patterns.
Source: anicdh/agstack — distributed by TomeVault.
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核