gsd-antigravity-kit 2.0.0 → 2.1.0
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/.agent/skills/gsd/SKILL.md +26 -4
- package/.agent/skills/gsd/VERSION +1 -1
- package/.agent/skills/gsd/assets/templates/AI-SPEC.md +246 -0
- package/.agent/skills/gsd/assets/templates/DEBUG.md +7 -2
- package/.agent/skills/gsd/assets/templates/config.json +56 -48
- package/.agent/skills/gsd/assets/templates/research.md +40 -0
- package/.agent/skills/gsd/assets/templates/spec.md +307 -0
- package/.agent/skills/gsd/assets/templates/state.md +8 -0
- package/.agent/skills/gsd/bin/gsd-tools.cjs +212 -11
- package/.agent/skills/gsd/bin/help-manifest.json +8 -2
- package/.agent/skills/gsd/bin/hooks/gsd-check-update-worker.js +108 -0
- package/.agent/skills/gsd/bin/hooks/gsd-check-update.js +14 -89
- package/.agent/skills/gsd/bin/hooks/gsd-context-monitor.js +34 -5
- package/.agent/skills/gsd/bin/hooks/gsd-phase-boundary.sh +1 -0
- package/.agent/skills/gsd/bin/hooks/gsd-prompt-guard.js +1 -1
- package/.agent/skills/gsd/bin/hooks/gsd-read-guard.js +6 -1
- package/.agent/skills/gsd/bin/hooks/gsd-session-state.sh +1 -0
- package/.agent/skills/gsd/bin/hooks/gsd-statusline.js +150 -16
- package/.agent/skills/gsd/bin/hooks/gsd-validate-commit.sh +1 -0
- package/.agent/skills/gsd/bin/hooks/gsd-workflow-guard.js +1 -1
- package/.agent/skills/gsd/bin/lib/audit.cjs +757 -0
- package/.agent/skills/gsd/bin/lib/commands.cjs +17 -7
- package/.agent/skills/gsd/bin/lib/config.cjs +66 -20
- package/.agent/skills/gsd/bin/lib/core.cjs +212 -12
- package/.agent/skills/gsd/bin/lib/frontmatter.cjs +6 -8
- package/.agent/skills/gsd/bin/lib/graphify.cjs +494 -0
- package/.agent/skills/gsd/bin/lib/gsd2-import.cjs +511 -0
- package/.agent/skills/gsd/bin/lib/init.cjs +371 -18
- package/.agent/skills/gsd/bin/lib/intel.cjs +9 -30
- package/.agent/skills/gsd/bin/lib/milestone.cjs +18 -17
- package/.agent/skills/gsd/bin/lib/model-profiles.cjs +1 -0
- package/.agent/skills/gsd/bin/lib/phase.cjs +225 -98
- package/.agent/skills/gsd/bin/lib/profile-output.cjs +17 -5
- package/.agent/skills/gsd/bin/lib/roadmap.cjs +12 -5
- package/.agent/skills/gsd/bin/lib/state.cjs +394 -129
- package/.agent/skills/gsd/bin/lib/template.cjs +8 -4
- package/.agent/skills/gsd/bin/lib/uat.cjs +2 -1
- package/.agent/skills/gsd/bin/lib/verify.cjs +111 -42
- package/.agent/skills/gsd/migration_report.md +2 -2
- package/.agent/skills/gsd/references/agents/gsd-advisor-researcher.md +23 -0
- package/.agent/skills/gsd/references/agents/gsd-ai-researcher.md +133 -0
- package/.agent/skills/gsd/references/agents/gsd-code-fixer.md +11 -10
- package/.agent/skills/gsd/references/agents/gsd-code-reviewer.md +2 -2
- package/.agent/skills/gsd/references/agents/gsd-codebase-mapper.md +13 -2
- package/.agent/skills/gsd/references/agents/gsd-debug-session-manager.md +314 -0
- package/.agent/skills/gsd/references/agents/gsd-debugger.md +147 -76
- package/.agent/skills/gsd/references/agents/gsd-doc-verifier.md +1 -1
- package/.agent/skills/gsd/references/agents/gsd-doc-writer.md +615 -602
- package/.agent/skills/gsd/references/agents/gsd-domain-researcher.md +153 -0
- package/.agent/skills/gsd/references/agents/gsd-eval-auditor.md +175 -0
- package/.agent/skills/gsd/references/agents/gsd-eval-planner.md +154 -0
- package/.agent/skills/gsd/references/agents/gsd-executor.md +108 -38
- package/.agent/skills/gsd/references/agents/gsd-framework-selector.md +160 -0
- package/.agent/skills/gsd/references/agents/gsd-integration-checker.md +454 -443
- package/.agent/skills/gsd/references/agents/gsd-intel-updater.md +40 -20
- package/.agent/skills/gsd/references/agents/gsd-nyquist-auditor.md +187 -176
- package/.agent/skills/gsd/references/agents/gsd-pattern-mapper.md +335 -0
- package/.agent/skills/gsd/references/agents/gsd-phase-researcher.md +112 -13
- package/.agent/skills/gsd/references/agents/gsd-plan-checker.md +104 -10
- package/.agent/skills/gsd/references/agents/gsd-planner.md +125 -167
- package/.agent/skills/gsd/references/agents/gsd-project-researcher.md +25 -2
- package/.agent/skills/gsd/references/agents/gsd-research-synthesizer.md +3 -3
- package/.agent/skills/gsd/references/agents/gsd-roadmapper.md +12 -1
- package/.agent/skills/gsd/references/agents/gsd-security-auditor.md +139 -128
- package/.agent/skills/gsd/references/agents/gsd-ui-auditor.md +3 -3
- package/.agent/skills/gsd/references/agents/gsd-ui-checker.md +11 -2
- package/.agent/skills/gsd/references/agents/gsd-ui-researcher.md +27 -4
- package/.agent/skills/gsd/references/agents/gsd-verifier.md +13 -19
- package/.agent/skills/gsd/references/commands/atomic/add-todo.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/check-todos.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/cleanup.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/do.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/help.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/join-discord.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/note.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/session-report.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/ship.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/stats.md +2 -2
- package/.agent/skills/gsd/references/commands/atomic/thread.md +141 -41
- package/.agent/skills/gsd/references/commands/atomic/undo.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/add-backlog.md +15 -12
- package/.agent/skills/gsd/references/commands/milestone/audit-milestone.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/complete-milestone.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/milestone-summary.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/new-milestone.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/plan-milestone-gaps.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/plant-seed.md +2 -2
- package/.agent/skills/gsd/references/commands/milestone/review-backlog.md +4 -4
- package/.agent/skills/gsd/references/commands/misc/ai-integration-phase.md +38 -0
- package/.agent/skills/gsd/references/commands/misc/audit-fix.md +2 -2
- package/.agent/skills/gsd/references/commands/misc/audit-uat.md +2 -2
- package/.agent/skills/gsd/references/commands/misc/eval-review.md +34 -0
- package/.agent/skills/gsd/references/commands/misc/extract_learnings.md +24 -0
- package/.agent/skills/gsd/references/commands/misc/from-gsd2.md +49 -0
- package/.agent/skills/gsd/references/commands/misc/graphify.md +203 -0
- package/.agent/skills/gsd/references/commands/misc/inbox.md +40 -0
- package/.agent/skills/gsd/references/commands/misc/next.md +5 -3
- package/.agent/skills/gsd/references/commands/misc/progress.md +4 -3
- package/.agent/skills/gsd/references/commands/misc/sketch-wrap-up.md +33 -0
- package/.agent/skills/gsd/references/commands/misc/sketch.md +47 -0
- package/.agent/skills/gsd/references/commands/misc/spec-phase.md +64 -0
- package/.agent/skills/gsd/references/commands/misc/spike-wrap-up.md +33 -0
- package/.agent/skills/gsd/references/commands/misc/spike.md +43 -0
- package/.agent/skills/gsd/references/commands/misc/verify-work.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/add-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/add-tests.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/discuss-phase.md +5 -5
- package/.agent/skills/gsd/references/commands/phase/execute-phase.md +4 -4
- package/.agent/skills/gsd/references/commands/phase/insert-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/list-phase-assumptions.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/plan-phase.md +3 -3
- package/.agent/skills/gsd/references/commands/phase/remove-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/research-phase.md +5 -5
- package/.agent/skills/gsd/references/commands/phase/secure-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/ui-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/ui-review.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/validate-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/phase/workstreams.md +9 -9
- package/.agent/skills/gsd/references/commands/project/analyze-dependencies.md +2 -2
- package/.agent/skills/gsd/references/commands/project/explore.md +2 -2
- package/.agent/skills/gsd/references/commands/project/import.md +2 -2
- package/.agent/skills/gsd/references/commands/project/intel.md +10 -10
- package/.agent/skills/gsd/references/commands/project/list-workspaces.md +2 -2
- package/.agent/skills/gsd/references/commands/project/map-codebase.md +2 -2
- package/.agent/skills/gsd/references/commands/project/new-project.md +2 -2
- package/.agent/skills/gsd/references/commands/project/new-workspace.md +2 -2
- package/.agent/skills/gsd/references/commands/project/remove-workspace.md +2 -2
- package/.agent/skills/gsd/references/commands/project/scan.md +2 -2
- package/.agent/skills/gsd/references/commands/system/autonomous.md +4 -3
- package/.agent/skills/gsd/references/commands/system/code-review-fix.md +3 -3
- package/.agent/skills/gsd/references/commands/system/code-review.md +3 -3
- package/.agent/skills/gsd/references/commands/system/debug.md +177 -100
- package/.agent/skills/gsd/references/commands/system/docs-update.md +2 -2
- package/.agent/skills/gsd/references/commands/system/fast.md +2 -2
- package/.agent/skills/gsd/references/commands/system/forensics.md +2 -2
- package/.agent/skills/gsd/references/commands/system/gsd-tools.md +153 -6
- package/.agent/skills/gsd/references/commands/system/health.md +2 -2
- package/.agent/skills/gsd/references/commands/system/manager.md +3 -3
- package/.agent/skills/gsd/references/commands/system/pause-work.md +2 -2
- package/.agent/skills/gsd/references/commands/system/pr-branch.md +2 -2
- package/.agent/skills/gsd/references/commands/system/profile-user.md +2 -2
- package/.agent/skills/gsd/references/commands/system/quick.md +127 -3
- package/.agent/skills/gsd/references/commands/system/reapply-patches.md +45 -6
- package/.agent/skills/gsd/references/commands/system/resume-work.md +2 -2
- package/.agent/skills/gsd/references/commands/system/review.md +6 -4
- package/.agent/skills/gsd/references/commands/system/set-profile.md +3 -3
- package/.agent/skills/gsd/references/commands/system/settings.md +2 -2
- package/.agent/skills/gsd/references/commands/system/update.md +2 -2
- package/.agent/skills/gsd/references/docs/ai-evals.md +156 -0
- package/.agent/skills/gsd/references/docs/ai-frameworks.md +186 -0
- package/.agent/skills/gsd/references/docs/artifact-types.md +18 -0
- package/.agent/skills/gsd/references/docs/autonomous-smart-discuss.md +277 -0
- package/.agent/skills/gsd/references/docs/checkpoints.md +30 -0
- package/.agent/skills/gsd/references/docs/common-bug-patterns.md +49 -49
- package/.agent/skills/gsd/references/docs/continuation-format.md +11 -7
- package/.agent/skills/gsd/references/docs/debugger-philosophy.md +76 -0
- package/.agent/skills/gsd/references/docs/decimal-phase-calculation.md +64 -64
- package/.agent/skills/gsd/references/docs/executor-examples.md +110 -0
- package/.agent/skills/gsd/references/docs/git-integration.md +4 -4
- package/.agent/skills/gsd/references/docs/git-planning-commit.md +40 -38
- package/.agent/skills/gsd/references/docs/ios-scaffold.md +123 -0
- package/.agent/skills/gsd/references/docs/mandatory-initial-read.md +2 -0
- package/.agent/skills/gsd/references/docs/phase-argument-parsing.md +61 -61
- package/.agent/skills/gsd/references/docs/planner-antipatterns.md +89 -0
- package/.agent/skills/gsd/references/docs/planner-revision.md +87 -87
- package/.agent/skills/gsd/references/docs/planner-source-audit.md +73 -0
- package/.agent/skills/gsd/references/docs/planning-config.md +33 -8
- package/.agent/skills/gsd/references/docs/project-skills-discovery.md +19 -0
- package/.agent/skills/gsd/references/docs/sketch-interactivity.md +41 -0
- package/.agent/skills/gsd/references/docs/sketch-theme-system.md +94 -0
- package/.agent/skills/gsd/references/docs/sketch-tooling.md +45 -0
- package/.agent/skills/gsd/references/docs/sketch-variant-patterns.md +81 -0
- package/.agent/skills/gsd/references/docs/tdd.md +67 -0
- package/.agent/skills/gsd/references/docs/universal-anti-patterns.md +5 -0
- package/.agent/skills/gsd/references/docs/workstream-flag.md +11 -11
- package/.agent/skills/gsd/references/mapping.md +1 -1
- package/.agent/skills/gsd/references/workflows/add-phase.md +112 -112
- package/.agent/skills/gsd/references/workflows/add-tests.md +6 -3
- package/.agent/skills/gsd/references/workflows/add-todo.md +5 -3
- package/.agent/skills/gsd/references/workflows/ai-integration-phase.md +284 -0
- package/.agent/skills/gsd/references/workflows/audit-fix.md +157 -157
- package/.agent/skills/gsd/references/workflows/audit-milestone.md +340 -340
- package/.agent/skills/gsd/references/workflows/audit-uat.md +109 -109
- package/.agent/skills/gsd/references/workflows/autonomous.md +20 -288
- package/.agent/skills/gsd/references/workflows/check-todos.md +4 -2
- package/.agent/skills/gsd/references/workflows/cleanup.md +3 -1
- package/.agent/skills/gsd/references/workflows/code-review-fix.md +497 -497
- package/.agent/skills/gsd/references/workflows/code-review.md +515 -515
- package/.agent/skills/gsd/references/workflows/complete-milestone.md +97 -24
- package/.agent/skills/gsd/references/workflows/diagnose-issues.md +238 -238
- package/.agent/skills/gsd/references/workflows/discovery-phase.md +2 -0
- package/.agent/skills/gsd/references/workflows/discuss-phase-assumptions.md +11 -11
- package/.agent/skills/gsd/references/workflows/discuss-phase.md +143 -19
- package/.agent/skills/gsd/references/workflows/do.md +8 -2
- package/.agent/skills/gsd/references/workflows/docs-update.md +5 -3
- package/.agent/skills/gsd/references/workflows/eval-review.md +155 -0
- package/.agent/skills/gsd/references/workflows/execute-phase.md +338 -54
- package/.agent/skills/gsd/references/workflows/execute-plan.md +80 -104
- package/.agent/skills/gsd/references/workflows/explore.md +3 -1
- package/.agent/skills/gsd/references/workflows/extract_learnings.md +232 -0
- package/.agent/skills/gsd/references/workflows/forensics.md +3 -3
- package/.agent/skills/gsd/references/workflows/health.md +2 -2
- package/.agent/skills/gsd/references/workflows/help.md +59 -1
- package/.agent/skills/gsd/references/workflows/import.md +3 -1
- package/.agent/skills/gsd/references/workflows/inbox.md +387 -384
- package/.agent/skills/gsd/references/workflows/insert-phase.md +130 -130
- package/.agent/skills/gsd/references/workflows/list-workspaces.md +56 -56
- package/.agent/skills/gsd/references/workflows/manager.md +5 -3
- package/.agent/skills/gsd/references/workflows/map-codebase.md +19 -5
- package/.agent/skills/gsd/references/workflows/milestone-summary.md +6 -6
- package/.agent/skills/gsd/references/workflows/new-milestone.md +63 -9
- package/.agent/skills/gsd/references/workflows/new-project.md +126 -22
- package/.agent/skills/gsd/references/workflows/new-workspace.md +6 -4
- package/.agent/skills/gsd/references/workflows/next.md +220 -153
- package/.agent/skills/gsd/references/workflows/note.md +2 -0
- package/.agent/skills/gsd/references/workflows/pause-work.md +11 -7
- package/.agent/skills/gsd/references/workflows/plan-milestone-gaps.md +273 -273
- package/.agent/skills/gsd/references/workflows/plan-phase.md +281 -62
- package/.agent/skills/gsd/references/workflows/plant-seed.md +4 -1
- package/.agent/skills/gsd/references/workflows/pr-branch.md +41 -13
- package/.agent/skills/gsd/references/workflows/profile-user.md +15 -13
- package/.agent/skills/gsd/references/workflows/progress.md +133 -21
- package/.agent/skills/gsd/references/workflows/quick.md +67 -27
- package/.agent/skills/gsd/references/workflows/remove-phase.md +155 -155
- package/.agent/skills/gsd/references/workflows/remove-workspace.md +4 -2
- package/.agent/skills/gsd/references/workflows/research-phase.md +3 -3
- package/.agent/skills/gsd/references/workflows/resume-project.md +3 -3
- package/.agent/skills/gsd/references/workflows/review.md +71 -8
- package/.agent/skills/gsd/references/workflows/scan.md +102 -102
- package/.agent/skills/gsd/references/workflows/secure-phase.md +7 -5
- package/.agent/skills/gsd/references/workflows/settings.md +24 -7
- package/.agent/skills/gsd/references/workflows/ship.md +71 -6
- package/.agent/skills/gsd/references/workflows/sketch-wrap-up.md +283 -0
- package/.agent/skills/gsd/references/workflows/sketch.md +263 -0
- package/.agent/skills/gsd/references/workflows/spec-phase.md +262 -0
- package/.agent/skills/gsd/references/workflows/spike-wrap-up.md +273 -0
- package/.agent/skills/gsd/references/workflows/spike.md +270 -0
- package/.agent/skills/gsd/references/workflows/stats.md +60 -60
- package/.agent/skills/gsd/references/workflows/transition.md +671 -671
- package/.agent/skills/gsd/references/workflows/ui-phase.md +33 -12
- package/.agent/skills/gsd/references/workflows/ui-review.md +6 -4
- package/.agent/skills/gsd/references/workflows/undo.md +3 -1
- package/.agent/skills/gsd/references/workflows/update.md +113 -2
- package/.agent/skills/gsd/references/workflows/validate-phase.md +7 -5
- package/.agent/skills/gsd/references/workflows/verify-phase.md +93 -10
- package/.agent/skills/gsd/references/workflows/verify-work.md +50 -10
- package/.agent/skills/gsd-converter/references/mapping.md +1 -1
- package/.agent/skills/gsd-converter/scripts/convert.py +36 -17
- package/.agent/skills/gsd-converter/scripts/regression_test.py +68 -33
- package/README.md +3 -2
- package/package.json +4 -2
- package/.agent/skills/release-manager/SKILL.md +0 -162
- package/.agent/skills/release-manager/bin/LICENSE +0 -21
- package/.agent/skills/release-manager/bin/gh.exe +0 -0
- package/.agent/skills/release-manager/references/update_kb_from_fixes.md +0 -29
- package/.agent/skills/release-manager/scripts/release.ps1 +0 -222
- package/.agent/skills/selectpaste-update/SKILL.md +0 -46
- package/.agent/skills/selectpaste-update/scripts/sync-commands.py +0 -317
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Multi-Variant HTML Patterns
|
|
2
|
+
|
|
3
|
+
Every sketch produces 2-3 variants in the same HTML file. The user switches between them to compare.
|
|
4
|
+
|
|
5
|
+
## Tab-Based Variants
|
|
6
|
+
|
|
7
|
+
The standard approach: a tab bar at the top of the page, each tab shows a different variant.
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<div id="variant-nav" style="position:fixed;top:0;left:0;right:0;z-index:9998;background:var(--color-surface, #fff);border-bottom:1px solid var(--color-border, #e5e5e5);padding:8px 16px;display:flex;gap:8px;font-family:system-ui;">
|
|
11
|
+
<button class="variant-tab active" onclick="showVariant('a')">A: Sidebar Layout</button>
|
|
12
|
+
<button class="variant-tab" onclick="showVariant('b')">B: Top Nav</button>
|
|
13
|
+
<button class="variant-tab" onclick="showVariant('c')">C: Floating Panels</button>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div id="variant-a" class="variant active">
|
|
17
|
+
<!-- Variant A content -->
|
|
18
|
+
</div>
|
|
19
|
+
<div id="variant-b" class="variant" style="display:none">
|
|
20
|
+
<!-- Variant B content -->
|
|
21
|
+
</div>
|
|
22
|
+
<div id="variant-c" class="variant" style="display:none">
|
|
23
|
+
<!-- Variant C content -->
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<script>
|
|
27
|
+
function showVariant(id) {
|
|
28
|
+
document.querySelectorAll('.variant').forEach(v => v.style.display = 'none');
|
|
29
|
+
document.querySelectorAll('.variant-tab').forEach(t => t.classList.remove('active'));
|
|
30
|
+
document.getElementById('variant-' + id).style.display = 'block';
|
|
31
|
+
event.target.classList.add('active');
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Add `padding-top` to the body to account for the fixed tab bar.
|
|
37
|
+
|
|
38
|
+
## Marking the Winner
|
|
39
|
+
|
|
40
|
+
After the user picks a direction, add a visual indicator to the winning tab:
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<button class="variant-tab active">A: Sidebar Layout ★ Selected</button>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Keep all variants visible and navigable — the winner is highlighted, not the only option.
|
|
47
|
+
|
|
48
|
+
## Side-by-Side (for small variants)
|
|
49
|
+
|
|
50
|
+
When comparing small elements (button styles, card layouts, icon treatments), render them next to each other with labels rather than using tabs:
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:24px;padding:24px;">
|
|
54
|
+
<div>
|
|
55
|
+
<h3>A: Rounded</h3>
|
|
56
|
+
<!-- variant content -->
|
|
57
|
+
</div>
|
|
58
|
+
<div>
|
|
59
|
+
<h3>B: Sharp</h3>
|
|
60
|
+
<!-- variant content -->
|
|
61
|
+
</div>
|
|
62
|
+
<div>
|
|
63
|
+
<h3>C: Pill</h3>
|
|
64
|
+
<!-- variant content -->
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Variant Count
|
|
70
|
+
|
|
71
|
+
- **First round (dramatic):** 2-3 meaningfully different approaches
|
|
72
|
+
- **Refinement rounds:** 2-3 subtle variations within the chosen direction
|
|
73
|
+
- **Never more than 4** — more than that overwhelms. If there are 5+ options, narrow before showing.
|
|
74
|
+
|
|
75
|
+
## Synthesis Variants
|
|
76
|
+
|
|
77
|
+
When the user cherry-picks elements across variants, create a new variant tab labeled descriptively:
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<button class="variant-tab" onclick="showVariant('synth1')">Synthesis: A's layout + C's palette</button>
|
|
81
|
+
```
|
|
@@ -247,6 +247,73 @@ Both follow same format: `{type}({phase}-{plan}): {description}`
|
|
|
247
247
|
- Consistent with overall commit strategy
|
|
248
248
|
</commit_pattern>
|
|
249
249
|
|
|
250
|
+
<gate_enforcement>
|
|
251
|
+
## Gate Enforcement Rules
|
|
252
|
+
|
|
253
|
+
When `workflow.tdd_mode` is enabled in config, the RED/GREEN/REFACTOR gate sequence is enforced for all `type: tdd` plans.
|
|
254
|
+
|
|
255
|
+
### Gate Definitions
|
|
256
|
+
|
|
257
|
+
| Gate | Required | Commit Pattern | Validation |
|
|
258
|
+
|------|----------|---------------|------------|
|
|
259
|
+
| RED | Yes | `test({phase}-{plan}): ...` | Test exists AND fails before implementation |
|
|
260
|
+
| GREEN | Yes | `feat({phase}-{plan}): ...` | Test passes after implementation |
|
|
261
|
+
| REFACTOR | No | `refactor({phase}-{plan}): ...` | Tests still pass after cleanup |
|
|
262
|
+
|
|
263
|
+
### Fail-Fast Rules
|
|
264
|
+
|
|
265
|
+
1. **Unexpected GREEN in RED phase:** If the test passes before any implementation code is written, STOP. The feature may already exist or the test is wrong. Investigate before proceeding.
|
|
266
|
+
2. **Missing RED commit:** If no `test(...)` commit precedes the `feat(...)` commit, the TDD discipline was violated. Flag in SUMMARY.md.
|
|
267
|
+
3. **REFACTOR breaks tests:** Undo the refactor immediately. Commit was premature — refactor in smaller steps.
|
|
268
|
+
|
|
269
|
+
### Executor Gate Validation
|
|
270
|
+
|
|
271
|
+
After completing a `type: tdd` plan, the executor validates the git log:
|
|
272
|
+
```bash
|
|
273
|
+
# Check for RED gate commit
|
|
274
|
+
git log --oneline --grep="^test(${PHASE}-${PLAN})" | head -1
|
|
275
|
+
# Check for GREEN gate commit
|
|
276
|
+
git log --oneline --grep="^feat(${PHASE}-${PLAN})" | head -1
|
|
277
|
+
# Check for optional REFACTOR gate commit
|
|
278
|
+
git log --oneline --grep="^refactor(${PHASE}-${PLAN})" | head -1
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
If RED or GREEN gate commits are missing, add a `## TDD Gate Compliance` section to SUMMARY.md with the violation details.
|
|
282
|
+
</gate_enforcement>
|
|
283
|
+
|
|
284
|
+
<end_of_phase_review>
|
|
285
|
+
## End-of-Phase TDD Review Checkpoint
|
|
286
|
+
|
|
287
|
+
When `workflow.tdd_mode` is enabled, the execute-phase orchestrator inserts a collaborative review checkpoint after all waves complete but before phase verification.
|
|
288
|
+
|
|
289
|
+
### Review Checkpoint Format
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
293
|
+
TDD REVIEW — Phase {X}
|
|
294
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
295
|
+
|
|
296
|
+
TDD Plans: {count} | Gate violations: {count}
|
|
297
|
+
|
|
298
|
+
| Plan | RED | GREEN | REFACTOR | Status |
|
|
299
|
+
|------|-----|-------|----------|--------|
|
|
300
|
+
| {id} | ✓ | ✓ | ✓ | Pass |
|
|
301
|
+
| {id} | ✓ | ✗ | — | FAIL |
|
|
302
|
+
|
|
303
|
+
{If violations exist:}
|
|
304
|
+
⚠ Gate violations are advisory — review before advancing.
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### What the Review Checks
|
|
308
|
+
|
|
309
|
+
1. **Gate sequence:** Each TDD plan has RED → GREEN commits in order
|
|
310
|
+
2. **Test quality:** RED phase tests fail for the right reason (not import errors or syntax)
|
|
311
|
+
3. **Minimal GREEN:** Implementation is minimal — no premature optimization in GREEN phase
|
|
312
|
+
4. **Refactor discipline:** If REFACTOR commit exists, tests still pass
|
|
313
|
+
|
|
314
|
+
This checkpoint is advisory — it does not block phase completion but surfaces TDD discipline issues for human review.
|
|
315
|
+
</end_of_phase_review>
|
|
316
|
+
|
|
250
317
|
<context_budget>
|
|
251
318
|
## Context Budget
|
|
252
319
|
|
|
@@ -56,3 +56,8 @@ Reference: `references/questioning.md` for the full anti-pattern list.
|
|
|
56
56
|
25. **Always use `gsd-tools.cjs`** (not `gsd-tools.js` or any other variant) -- GSD uses CommonJS for Node.js CLI compatibility.
|
|
57
57
|
26. **Plan files MUST follow `{padded_phase}-{NN}-PLAN.md` pattern** (e.g., `01-01-PLAN.md`). Never use `PLAN-01.md`, `plan-01.md`, or any other variation -- gsd-tools detection depends on this exact pattern.
|
|
58
58
|
27. **Do not start executing the next plan before writing the SUMMARY.md for the current plan** -- downstream plans may reference it via `@` includes.
|
|
59
|
+
|
|
60
|
+
## iOS / Apple Platform Rules
|
|
61
|
+
|
|
62
|
+
28. **NEVER use `Package.swift` + `.executableTarget` (or `.target`) as the primary build system for iOS apps.** SPM executable targets produce macOS CLI binaries, not iOS `.app` bundles. They cannot be installed on iOS devices or submitted to the App Store. Use XcodeGen (`project.yml` + `xcodegen generate`) to create a proper `.xcodeproj`. See `references/ios-scaffold.md` for the full pattern.
|
|
63
|
+
29. **Verify SwiftUI API availability before use.** Many SwiftUI APIs require a specific minimum iOS version (e.g., `NavigationSplitView` is iOS 16+, `List(selection:)` with multi-select and `@Observable` require iOS 17). If a plan uses an API that exceeds the declared `IPHONEOS_DEPLOYMENT_TARGET`, raise the deployment target or add `#available` guards.
|
|
@@ -93,19 +93,19 @@ This ensures workstream scope chains automatically through the workflow:
|
|
|
93
93
|
## CLI Usage
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
# All gsd-
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
# All gsd-sdk query commands accept --ws
|
|
97
|
+
gsd-sdk query state.json --ws feature-a
|
|
98
|
+
gsd-sdk query find-phase 3 --ws feature-b
|
|
99
99
|
|
|
100
100
|
# Session-local switching without --ws on every command
|
|
101
|
-
GSD_SESSION_KEY=my-terminal-a
|
|
102
|
-
GSD_SESSION_KEY=my-terminal-a
|
|
103
|
-
GSD_SESSION_KEY=my-terminal-b
|
|
104
|
-
GSD_SESSION_KEY=my-terminal-b
|
|
101
|
+
GSD_SESSION_KEY=my-terminal-a gsd-sdk query workstream.set feature-a
|
|
102
|
+
GSD_SESSION_KEY=my-terminal-a gsd-sdk query state.json
|
|
103
|
+
GSD_SESSION_KEY=my-terminal-b gsd-sdk query workstream.set feature-b
|
|
104
|
+
GSD_SESSION_KEY=my-terminal-b gsd-sdk query state.json
|
|
105
105
|
|
|
106
106
|
# Workstream CRUD
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
gsd-sdk query workstream.create <name>
|
|
108
|
+
gsd-sdk query workstream.list
|
|
109
|
+
gsd-sdk query workstream.status <name>
|
|
110
|
+
gsd-sdk query workstream.complete <name>
|
|
111
111
|
```
|
|
@@ -19,4 +19,4 @@ When converting from a standard GSD installation to an Antigravity Skill, paths
|
|
|
19
19
|
References to `@.planning/` are **preserved**, as these refer to the active project's local planning directory, not the skill's own resources.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
|
-
*Generated by gsd-converter on 2026-04-
|
|
22
|
+
*Generated by gsd-converter on 2026-04-18*
|
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<required_reading>
|
|
6
|
-
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
-
</required_reading>
|
|
8
|
-
|
|
9
|
-
<process>
|
|
10
|
-
|
|
11
|
-
<step name="parse_arguments">
|
|
12
|
-
Parse the command arguments:
|
|
13
|
-
- All arguments become the phase description
|
|
14
|
-
- Example: `/gsd-add-phase Add authentication` → description = "Add authentication"
|
|
15
|
-
- Example: `/gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
|
|
16
|
-
|
|
17
|
-
If no arguments provided:
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
ERROR: Phase description required
|
|
21
|
-
Usage: /gsd-add-phase <description>
|
|
22
|
-
Example: /gsd-add-phase Add authentication system
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Exit.
|
|
26
|
-
</step>
|
|
27
|
-
|
|
28
|
-
<step name="init_context">
|
|
29
|
-
Load phase operation context:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
|
|
33
|
-
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Check `roadmap_exists` from init JSON. If false:
|
|
37
|
-
```
|
|
38
|
-
ERROR: No roadmap found (.planning/ROADMAP.md)
|
|
39
|
-
Run /gsd-new-project to initialize.
|
|
40
|
-
```
|
|
41
|
-
Exit.
|
|
42
|
-
</step>
|
|
43
|
-
|
|
44
|
-
<step name="add_phase">
|
|
45
|
-
**Delegate the phase addition to gsd-
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
The CLI handles:
|
|
52
|
-
- Finding the highest existing integer phase number
|
|
53
|
-
- Calculating next phase number (max + 1)
|
|
54
|
-
- Generating slug from description
|
|
55
|
-
- Creating the phase directory (`.planning/phases/{NN}-{slug}/`)
|
|
56
|
-
- Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections
|
|
57
|
-
|
|
58
|
-
Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`.
|
|
59
|
-
</step>
|
|
60
|
-
|
|
61
|
-
<step name="update_project_state">
|
|
62
|
-
Update STATE.md to reflect the new phase:
|
|
63
|
-
|
|
64
|
-
1. Read `.planning/STATE.md`
|
|
65
|
-
2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
|
|
66
|
-
```
|
|
67
|
-
- Phase {N} added: {description}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
If "Roadmap Evolution" section doesn't exist, create it.
|
|
71
|
-
</step>
|
|
72
|
-
|
|
73
|
-
<step name="completion">
|
|
74
|
-
Present completion summary:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
Phase {N} added to current milestone:
|
|
78
|
-
- Description: {description}
|
|
79
|
-
- Directory: .planning/phases/{phase-num}-{slug}/
|
|
80
|
-
- Status: Not planned yet
|
|
81
|
-
|
|
82
|
-
Roadmap updated: .planning/ROADMAP.md
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## ▶ Next Up
|
|
87
|
-
|
|
88
|
-
**Phase {N}: {description}**
|
|
89
|
-
|
|
90
|
-
`/clear` then:
|
|
91
|
-
|
|
92
|
-
`/gsd-plan-phase {N}`
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
**Also available:**
|
|
97
|
-
- `/gsd-add-phase <description>` — add another phase
|
|
98
|
-
- Review roadmap
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
```
|
|
102
|
-
</step>
|
|
103
|
-
|
|
104
|
-
</process>
|
|
105
|
-
|
|
106
|
-
<success_criteria>
|
|
107
|
-
- [ ] `gsd-
|
|
108
|
-
- [ ] Phase directory created
|
|
109
|
-
- [ ] Roadmap updated with new phase entry
|
|
110
|
-
- [ ] STATE.md updated with roadmap evolution note
|
|
111
|
-
- [ ] User informed of next steps
|
|
112
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_arguments">
|
|
12
|
+
Parse the command arguments:
|
|
13
|
+
- All arguments become the phase description
|
|
14
|
+
- Example: `/gsd-add-phase Add authentication` → description = "Add authentication"
|
|
15
|
+
- Example: `/gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
|
|
16
|
+
|
|
17
|
+
If no arguments provided:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
ERROR: Phase description required
|
|
21
|
+
Usage: /gsd-add-phase <description>
|
|
22
|
+
Example: /gsd-add-phase Add authentication system
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Exit.
|
|
26
|
+
</step>
|
|
27
|
+
|
|
28
|
+
<step name="init_context">
|
|
29
|
+
Load phase operation context:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
INIT=$(gsd-sdk query init.phase-op "0")
|
|
33
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Check `roadmap_exists` from init JSON. If false:
|
|
37
|
+
```
|
|
38
|
+
ERROR: No roadmap found (.planning/ROADMAP.md)
|
|
39
|
+
Run /gsd-new-project to initialize.
|
|
40
|
+
```
|
|
41
|
+
Exit.
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="add_phase">
|
|
45
|
+
**Delegate the phase addition to `gsd-sdk query phase.add`:**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
RESULT=$(gsd-sdk query phase.add "${description}")
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The CLI handles:
|
|
52
|
+
- Finding the highest existing integer phase number
|
|
53
|
+
- Calculating next phase number (max + 1)
|
|
54
|
+
- Generating slug from description
|
|
55
|
+
- Creating the phase directory (`.planning/phases/{NN}-{slug}/`)
|
|
56
|
+
- Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections
|
|
57
|
+
|
|
58
|
+
Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`.
|
|
59
|
+
</step>
|
|
60
|
+
|
|
61
|
+
<step name="update_project_state">
|
|
62
|
+
Update STATE.md to reflect the new phase:
|
|
63
|
+
|
|
64
|
+
1. Read `.planning/STATE.md`
|
|
65
|
+
2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
|
|
66
|
+
```
|
|
67
|
+
- Phase {N} added: {description}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If "Roadmap Evolution" section doesn't exist, create it.
|
|
71
|
+
</step>
|
|
72
|
+
|
|
73
|
+
<step name="completion">
|
|
74
|
+
Present completion summary:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Phase {N} added to current milestone:
|
|
78
|
+
- Description: {description}
|
|
79
|
+
- Directory: .planning/phases/{phase-num}-{slug}/
|
|
80
|
+
- Status: Not planned yet
|
|
81
|
+
|
|
82
|
+
Roadmap updated: .planning/ROADMAP.md
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
87
|
+
|
|
88
|
+
**Phase {N}: {description}**
|
|
89
|
+
|
|
90
|
+
`/clear` then:
|
|
91
|
+
|
|
92
|
+
`/gsd-plan-phase {N}`
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
**Also available:**
|
|
97
|
+
- `/gsd-add-phase <description>` — add another phase
|
|
98
|
+
- Review roadmap
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
```
|
|
102
|
+
</step>
|
|
103
|
+
|
|
104
|
+
</process>
|
|
105
|
+
|
|
106
|
+
<success_criteria>
|
|
107
|
+
- [ ] `gsd-sdk query phase.add` executed successfully
|
|
108
|
+
- [ ] Phase directory created
|
|
109
|
+
- [ ] Roadmap updated with new phase entry
|
|
110
|
+
- [ ] STATE.md updated with roadmap evolution note
|
|
111
|
+
- [ ] User informed of next steps
|
|
112
|
+
</success_criteria>
|
|
@@ -33,7 +33,7 @@ Exit.
|
|
|
33
33
|
Load phase operation context:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
|
|
36
|
+
INIT=$(gsd-sdk query init.phase-op "${PHASE_ARG}")
|
|
37
37
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
38
38
|
```
|
|
39
39
|
|
|
@@ -108,6 +108,9 @@ Read each file to verify classification. Don't classify based on filename alone.
|
|
|
108
108
|
<step name="present_classification">
|
|
109
109
|
Present the classification to the user for confirmation before proceeding:
|
|
110
110
|
|
|
111
|
+
|
|
112
|
+
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Antigravity runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
|
|
113
|
+
|
|
111
114
|
```
|
|
112
115
|
AskUserQuestion(
|
|
113
116
|
header: "Test Classification",
|
|
@@ -297,7 +300,7 @@ Create a test coverage report and present to user:
|
|
|
297
300
|
|
|
298
301
|
Record test generation in project state:
|
|
299
302
|
```bash
|
|
300
|
-
|
|
303
|
+
gsd-sdk query state-snapshot
|
|
301
304
|
```
|
|
302
305
|
|
|
303
306
|
If there are passing tests to commit:
|
|
@@ -312,7 +315,7 @@ Present next steps:
|
|
|
312
315
|
```
|
|
313
316
|
---
|
|
314
317
|
|
|
315
|
-
## ▶ Next Up
|
|
318
|
+
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
316
319
|
|
|
317
320
|
{if bugs discovered:}
|
|
318
321
|
**Fix discovered bugs:** `/gsd-quick fix the {N} test failures discovered in phase ${phase_number}`
|
|
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
12
12
|
Load todo context:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
|
|
15
|
+
INIT=$(gsd-sdk query init.todos)
|
|
16
16
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
17
17
|
```
|
|
18
18
|
|
|
@@ -70,6 +70,8 @@ If potential duplicate found:
|
|
|
70
70
|
1. Read the existing todo
|
|
71
71
|
2. Compare scope
|
|
72
72
|
|
|
73
|
+
|
|
74
|
+
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Antigravity runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
|
|
73
75
|
If overlapping, use AskUserQuestion:
|
|
74
76
|
- header: "Duplicate?"
|
|
75
77
|
- question: "Similar todo exists: [title]. What would you like to do?"
|
|
@@ -84,7 +86,7 @@ Use values from init context: `timestamp` and `date` are already available.
|
|
|
84
86
|
|
|
85
87
|
Generate slug for the title:
|
|
86
88
|
```bash
|
|
87
|
-
|
|
89
|
+
slug=$(gsd-sdk query generate-slug "$title" --raw)
|
|
88
90
|
```
|
|
89
91
|
|
|
90
92
|
Write to `.planning/todos/pending/${date}-${slug}.md`:
|
|
@@ -119,7 +121,7 @@ If `.planning/STATE.md` exists:
|
|
|
119
121
|
Commit the todo and any updated state:
|
|
120
122
|
|
|
121
123
|
```bash
|
|
122
|
-
|
|
124
|
+
gsd-sdk query commit "docs: capture todo - [title]" .planning/todos/pending/[filename] .planning/STATE.md
|
|
123
125
|
```
|
|
124
126
|
|
|
125
127
|
Tool respects `commit_docs` config and gitignore automatically.
|