一键导入
gsp-project-brief
Scope a feature or flow — use when: scope this, define what we're building, plan the project, what should we build, write a brief
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Scope a feature or flow — use when: scope this, define what we're building, plan the project, what should we build, write a brief
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Add reference material to a project — use when: add a reference, save inspiration, attach examples, link this site as reference, drop in a moodboard
Craft ASCII art interactively — you direct, the artist creates — use when: make ASCII art, terminal art, decorative banner, splash screen, hero ASCII
Audit an existing brand before evolving it — use when: audit our brand, what do we have, before a rebrand, brand health check, current brand state, brand inventory
Sync brand to match a project's shipped state — tokens, voice, visual patterns, personality — use when: brand drifted from the app, reverse-engineer the brand, the code is ahead of the brand docs, sync brand to shipped, update brand from production
Design color systems — palettes, contrast, semantic mapping, dark mode — use when: pick colors, build a palette, semantic tokens, dark mode pairings, brand color, accent color
Design icon systems — library selection, sizing, containers, custom SVG direction — use when: pick an icon library, icon sizing rules, icon containers, custom SVG direction, swap icons, icon strategy
| name | gsp-project-brief |
| description | Scope a feature or flow — use when: scope this, define what we're building, plan the project, what should we build, write a brief |
Encourages treating the project as a bounded issue (or set of issues) and a PR — ship small, ship complete.
Works with the dual-diamond architecture: reads brand system from .design/branding/{brand}/patterns/ via brand.ref, reads/writes project assets in .design/projects/{project}/.
Input: Brand system (via brand.ref) + project BRIEF.md + config.json
Output: {project}/brief/ (scope.md, target-adaptations.md, conditionals, INDEX.md)
Output mode: Honor ${CLAUDE_SKILL_DIR}/../../policies/output-modes.md per preferences.project_size (default compact). Chunk file counts and consolidation rules live in the policy.
<execution_context> @${CLAUDE_SKILL_DIR}/../../templates/phases/brief.md </execution_context>
## Step 0: Resolve project and brandIf .design/projects/ does not exist: output "No GSP project found. Run /gsp-start to begin." and stop.
Resolve project from .design/projects/ (one → use it, multiple → ask). Set PROJECT_PATH.
Read {PROJECT_PATH}/brand.ref → set BRAND_PATH. If brand.ref doesn't exist, tell the user to run /gsp-start.
Read {BRAND_PATH}/patterns/INDEX.md. If it exists, load all foundation chunks + selective component chunks.
If it doesn't exist, tell the user to run /gsp-brand-guidelines first to create the brand's design patterns.
Also read the brand .yml preset from {BRAND_PATH}/patterns/.
Read:
{PROJECT_PATH}/BRIEF.md — what we're building, platforms, tech stack{PROJECT_PATH}/config.json — get implementation_target, design_scope, codebase_type, app_path, repo_type, accessibility_level, style_presetAfter reading config, check if app_path is empty. If empty AND (repo_type is monorepo OR multiple package.json files are found at apps/*/package.json or packages/*/package.json), set flag NEEDS_APP_SELECTION = true.
Expertise pointers:
accessibility_level (AA vs AAA) carries scope implications for contrast-sensitive components — see ${CLAUDE_SKILL_DIR}/../gsp-accessibility/SKILL.md for level interpretation when reasoning about adaptationsstyle_preset (when set) drives style-preset-specific component conventions — see ${CLAUDE_SKILL_DIR}/../gsp-style/styles/{preset}.md for the preset's patterns + constraints + effects vocabulary that adaptation reasoning should respecttarget-adaptations.md, consult ${CLAUDE_SKILL_DIR}/../gsp-color/domains/palette.md for OKLCH/contrast considerations and ${CLAUDE_SKILL_DIR}/../gsp-typography/domains/scale.md for type-scale ratiosRead .design/system/STACK.md and .design/system/COMPONENTS.md (if exist) — existing tech stack, components, architecture.
Stack inheritance (existing codebases): If STACK.md exists and the project config.json has empty or generic values for tech_stack, implementation_target, or codebase_type, inherit them from STACK.md directly — do not ask the user questions the stack already answers. Update config.json with the inherited values before proceeding.
The global stack is the compliance baseline. Every project in this workspace must target it. If the user's brief describes a different stack than what STACK.md declares (e.g., "I want to use Radix directly" when STACK.md says shadcn/ui), surface the conflict: "⚠️ Your brief mentions {X}, but the workspace stack is {Y} per STACK.md. Proceed with the workspace stack, or update STACK.md first?"
Read .design/CHANGELOG.md — quick history of what prior projects built.
For projects with overlapping scope, read their codebase/MANIFEST.md for detail.
Glob .design/projects/*/STATE.md — detect active sibling projects.
Run when NEEDS_APP_SELECTION = true.
apps/*/package.json and packages/*/package.json to find all app packages.name and the primary framework dependency (Next.js, Vite, React Native, etc.).apps/web → my-app-web (Next.js)
apps/mobile → my-app-mobile (Expo / React Native)
packages/ui → my-app-ui (Vite)
AskUserQuestion: "Which app does this project target?" with one option per detected app (showing path + framework) plus Whole repo (no specific app).app_path to the chosen path (e.g. apps/web) and repo_type to monorepoapp_path to "" and repo_type to monorepoapp_path and repo_type back to {PROJECT_PATH}/config.json.APP_NAME = last segment of app_path (e.g. apps/web → web, empty → root). Note that the per-app stack file will live at .design/system/stacks/{APP_NAME}.md.If design_scope is tokens:
{PROJECT_PATH}/STATE.md — set Phase 1 (Brief) status to skippedtokens."/gsp-project-build."Ask the user (via AskUserQuestion): "Is this project linked to a GitHub issue?"
git.issue to {PROJECT_PATH}/config.json and populate the | Issue | row in STATE.md. Also read the issue title/body via gh issue view {number} --json title,body,labels and use that content to pre-populate scope context (saves the user from re-describing what the issue already states).Using all context loaded in Step 1, scope the project directly. Act as a Senior Design Project Lead bridging the brand system and the project's specific needs.
If any sibling project is active and its scope overlaps with this project, flag it: "⚠️ {name} is actively working on {scope}. Coordinate to avoid conflicts." If this project modifies components from a sibling's manifest, note provenance.
{PROJECT_PATH}/brief/Use the brief output template from execution_context for chunk formatting.
scope.md (~80-120 lines) — prioritized screen list, component scope, project boundaries, success criteria, dependencies, issue framingtarget-adaptations.md (~60-100 lines) — token overrides, component adaptations, platform considerations, implementation target mappinginstall-manifest.md (shadcn/rn-reusables only) — install commands for all needed componentsgap-analysis.md (existing target only) — components/tokens in brand system but not in codebasefile-references.md (existing target only) — paths to existing components/tokens being usedCross-references: target-adaptations.md links to {BRAND_PATH}/patterns/components/{name}.md; gap-analysis.md links to brand system components and tokens; scope.md references the project BRIEF.md.
INDEX.md# Brief
> Phase: brief | Project: {name} | Generated: {DATE}
## Scoping
| Chunk | File | ~Lines |
|-------|------|--------|
| Scope | [scope.md](./scope.md) | ~{N} |
| Target Adaptations | [target-adaptations.md](./target-adaptations.md) | ~{N} |
| Install Manifest | [install-manifest.md](./install-manifest.md) | ~{N} |
| Gap Analysis | [gap-analysis.md](./gap-analysis.md) | ~{N} |
| File References | [file-references.md](./file-references.md) | ~{N} |
Only include rows for chunks that were actually produced.
Update {PROJECT_PATH}/exports/INDEX.md:
templates/exports-index.md<!-- BEGIN:brief --> and <!-- END:brief --> with populated table:<!-- BEGIN:brief -->
| Section | File |
|---------|------|
| Scope | [scope.md](../brief/scope.md) |
| Target Adaptations | [target-adaptations.md](../brief/target-adaptations.md) |
| Install Manifest | [install-manifest.md](../brief/install-manifest.md) |
| Gap Analysis | [gap-analysis.md](../brief/gap-analysis.md) |
| File References | [file-references.md](../brief/file-references.md) |
<!-- END:brief -->
Only include rows for chunks that were actually produced.
Update {PROJECT_PATH}/STATE.md:
completeWrite/update .design/CLAUDE.md — register the project as started. If the file doesn't exist, read the template from ${CLAUDE_SKILL_DIR}/../../templates/design-claude.md first. Append under ## Projects:
### {project-name} · in progress · {DATE}
brand: {brand-name} · next: gsp-project-research · .design/projects/{project-name}/
Invoke /gsp-phase-transition with phase brief and output directory {PROJECT_PATH}/brief/.