opencode-goopspec 0.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/LICENSE +21 -0
- package/README.md +650 -0
- package/agents/goop-debugger.md +265 -0
- package/agents/goop-designer.md +244 -0
- package/agents/goop-executor.md +217 -0
- package/agents/goop-explorer.md +252 -0
- package/agents/goop-librarian.md +197 -0
- package/agents/goop-orchestrator.md +224 -0
- package/agents/goop-planner.md +231 -0
- package/agents/goop-researcher.md +246 -0
- package/agents/goop-tester.md +245 -0
- package/agents/goop-verifier.md +266 -0
- package/agents/goop-writer.md +293 -0
- package/agents/memory-distiller.md +226 -0
- package/commands/goop-accept.md +183 -0
- package/commands/goop-amend.md +175 -0
- package/commands/goop-complete.md +206 -0
- package/commands/goop-debug.md +318 -0
- package/commands/goop-discuss.md +138 -0
- package/commands/goop-execute.md +137 -0
- package/commands/goop-help.md +82 -0
- package/commands/goop-map-codebase.md +501 -0
- package/commands/goop-memory.md +66 -0
- package/commands/goop-milestone.md +213 -0
- package/commands/goop-pause.md +61 -0
- package/commands/goop-plan.md +78 -0
- package/commands/goop-quick.md +165 -0
- package/commands/goop-recall.md +48 -0
- package/commands/goop-remember.md +71 -0
- package/commands/goop-research.md +98 -0
- package/commands/goop-resume.md +57 -0
- package/commands/goop-setup.md +208 -0
- package/commands/goop-specify.md +145 -0
- package/commands/goop-status.md +153 -0
- package/dist/index.js +31017 -0
- package/dist/memory/index.js +48752 -0
- package/package.json +73 -0
- package/references/agent-patterns.md +334 -0
- package/references/boundary-system.md +141 -0
- package/references/deviation-rules.md +80 -0
- package/references/dispatch-patterns.md +176 -0
- package/references/model-profiles.md +109 -0
- package/references/orchestrator-philosophy.md +280 -0
- package/references/security-checklist.md +163 -0
- package/references/subagent-protocol.md +393 -0
- package/references/tdd.md +231 -0
- package/references/ui-brand.md +261 -0
- package/references/workflow-accept.md +325 -0
- package/references/workflow-execute.md +315 -0
- package/references/workflow-plan.md +179 -0
- package/references/workflow-research.md +234 -0
- package/references/workflow-specify.md +278 -0
- package/skills/README.md +362 -0
- package/skills/accessibility/skill.md +41 -0
- package/skills/accessibility-testing/skill.md +47 -0
- package/skills/api-docs/skill.md +50 -0
- package/skills/architecture-design/skill.md +168 -0
- package/skills/atomic-commits/skill.md +53 -0
- package/skills/code-review/skill.md +59 -0
- package/skills/codebase-mapping/skill.md +54 -0
- package/skills/convention-detection/skill.md +68 -0
- package/skills/debugging/skill.md +59 -0
- package/skills/deviation-handling/skill.md +187 -0
- package/skills/documentation/skill.md +213 -0
- package/skills/goop-core/skill.md +383 -0
- package/skills/memory-usage/skill.md +208 -0
- package/skills/parallel-planning/skill.md +170 -0
- package/skills/pattern-extraction/skill.md +73 -0
- package/skills/performance-optimization/skill.md +188 -0
- package/skills/playwright/skill.md +69 -0
- package/skills/playwright-testing/skill.md +93 -0
- package/skills/progress-tracking/skill.md +155 -0
- package/skills/readme-generation/skill.md +87 -0
- package/skills/research/skill.md +161 -0
- package/skills/responsive-design/skill.md +76 -0
- package/skills/scientific-method/skill.md +67 -0
- package/skills/security-audit/skill.md +152 -0
- package/skills/task-decomposition/skill.md +153 -0
- package/skills/task-delegation/skill.md +127 -0
- package/skills/technical-writing/skill.md +69 -0
- package/skills/testing/skill.md +202 -0
- package/skills/ui-design/skill.md +73 -0
- package/skills/ux-patterns/skill.md +82 -0
- package/skills/verification/skill.md +178 -0
- package/skills/visual-regression/skill.md +86 -0
- package/templates/blueprint.md +141 -0
- package/templates/chronicle.md +156 -0
- package/templates/milestone.md +131 -0
- package/templates/research.md +117 -0
- package/templates/retrospective.md +188 -0
- package/templates/spec.md +103 -0
- package/templates/summary.md +202 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Test-Driven Development (TDD) Reference
|
|
2
|
+
|
|
3
|
+
GoopSpec supports TDD-style planning and execution. This reference covers how to use TDD effectively within the GoopSpec workflow.
|
|
4
|
+
|
|
5
|
+
## TDD Cycle
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────┐
|
|
9
|
+
│ RED │
|
|
10
|
+
│ Write a │
|
|
11
|
+
│ failing test │
|
|
12
|
+
└────────┬────────┘
|
|
13
|
+
│
|
|
14
|
+
▼
|
|
15
|
+
┌─────────────────┐
|
|
16
|
+
│ GREEN │
|
|
17
|
+
│ Minimum code │
|
|
18
|
+
│ to pass │
|
|
19
|
+
└────────┬────────┘
|
|
20
|
+
│
|
|
21
|
+
▼
|
|
22
|
+
┌─────────────────┐
|
|
23
|
+
│ REFACTOR │
|
|
24
|
+
│ Clean up │
|
|
25
|
+
│ Keep green │
|
|
26
|
+
└────────┬────────┘
|
|
27
|
+
│
|
|
28
|
+
└──────────► Repeat
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## TDD in GoopSpec
|
|
32
|
+
|
|
33
|
+
### Plan Configuration
|
|
34
|
+
|
|
35
|
+
Enable TDD mode in plan frontmatter:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
---
|
|
39
|
+
phase: 1
|
|
40
|
+
plan: auth-feature
|
|
41
|
+
type: tdd
|
|
42
|
+
wave: 1
|
|
43
|
+
autonomous: true
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Task Structure
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
<task type="auto" tdd="true">
|
|
51
|
+
### Task 1: User Login
|
|
52
|
+
|
|
53
|
+
**Test First:**
|
|
54
|
+
```typescript
|
|
55
|
+
// src/auth/__tests__/login.test.ts
|
|
56
|
+
import { login } from '../login';
|
|
57
|
+
|
|
58
|
+
describe('login', () => {
|
|
59
|
+
it('should return user on valid credentials', async () => {
|
|
60
|
+
const result = await login('test@example.com', 'password123');
|
|
61
|
+
expect(result.user).toBeDefined();
|
|
62
|
+
expect(result.user.email).toBe('test@example.com');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('should throw on invalid credentials', async () => {
|
|
66
|
+
await expect(login('test@example.com', 'wrong'))
|
|
67
|
+
.rejects.toThrow('Invalid credentials');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Implementation:**
|
|
73
|
+
```typescript
|
|
74
|
+
// src/auth/login.ts
|
|
75
|
+
export async function login(email: string, password: string) {
|
|
76
|
+
const user = await db.users.findByEmail(email);
|
|
77
|
+
if (!user || !await verifyPassword(password, user.passwordHash)) {
|
|
78
|
+
throw new Error('Invalid credentials');
|
|
79
|
+
}
|
|
80
|
+
return { user };
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Refactor:**
|
|
85
|
+
- Extract password verification to separate module
|
|
86
|
+
- Add input validation
|
|
87
|
+
- Add logging
|
|
88
|
+
|
|
89
|
+
**Done:**
|
|
90
|
+
- Tests pass: `npm test src/auth/__tests__/login.test.ts`
|
|
91
|
+
- Coverage > 80%
|
|
92
|
+
</task>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## TDD Execution Flow
|
|
96
|
+
|
|
97
|
+
### Step 1: RED Phase
|
|
98
|
+
|
|
99
|
+
1. Write the test file first
|
|
100
|
+
2. Run tests to confirm they fail
|
|
101
|
+
3. Commit the failing test
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Write test
|
|
105
|
+
edit src/auth/__tests__/login.test.ts
|
|
106
|
+
|
|
107
|
+
# Verify it fails
|
|
108
|
+
npm test -- --testPathPattern=login
|
|
109
|
+
|
|
110
|
+
# Commit
|
|
111
|
+
git commit -m "test(auth): add login tests (red)"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 2: GREEN Phase
|
|
115
|
+
|
|
116
|
+
1. Write minimum code to pass
|
|
117
|
+
2. Run tests to confirm they pass
|
|
118
|
+
3. Commit the implementation
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Write implementation
|
|
122
|
+
edit src/auth/login.ts
|
|
123
|
+
|
|
124
|
+
# Verify it passes
|
|
125
|
+
npm test -- --testPathPattern=login
|
|
126
|
+
|
|
127
|
+
# Commit
|
|
128
|
+
git commit -m "feat(auth): implement login (green)"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Step 3: REFACTOR Phase
|
|
132
|
+
|
|
133
|
+
1. Improve code quality
|
|
134
|
+
2. Keep tests passing
|
|
135
|
+
3. Commit refactoring
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Refactor
|
|
139
|
+
edit src/auth/login.ts
|
|
140
|
+
|
|
141
|
+
# Verify still passes
|
|
142
|
+
npm test -- --testPathPattern=login
|
|
143
|
+
|
|
144
|
+
# Commit
|
|
145
|
+
git commit -m "refactor(auth): extract password verification"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Context Budget for TDD
|
|
149
|
+
|
|
150
|
+
TDD requires more context due to test code. Allocate accordingly:
|
|
151
|
+
|
|
152
|
+
| Phase | Context Budget |
|
|
153
|
+
|-------|---------------|
|
|
154
|
+
| RED (tests) | 20% |
|
|
155
|
+
| GREEN (impl) | 40% |
|
|
156
|
+
| REFACTOR | 20% |
|
|
157
|
+
| Buffer | 20% |
|
|
158
|
+
|
|
159
|
+
**Total per TDD cycle:** ~40% context
|
|
160
|
+
|
|
161
|
+
**Recommendation:** 2-3 TDD tasks per plan maximum.
|
|
162
|
+
|
|
163
|
+
## Test Categories
|
|
164
|
+
|
|
165
|
+
### Unit Tests
|
|
166
|
+
|
|
167
|
+
Test individual functions/modules in isolation.
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
describe('validateEmail', () => {
|
|
171
|
+
it('should accept valid emails', () => {
|
|
172
|
+
expect(validateEmail('user@example.com')).toBe(true);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Integration Tests
|
|
178
|
+
|
|
179
|
+
Test module interactions.
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
describe('auth flow', () => {
|
|
183
|
+
it('should login and create session', async () => {
|
|
184
|
+
const result = await login('user@example.com', 'pass');
|
|
185
|
+
const session = await getSession(result.sessionId);
|
|
186
|
+
expect(session.userId).toBe(result.user.id);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### E2E Tests
|
|
192
|
+
|
|
193
|
+
Test complete user flows (use sparingly, high cost).
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
describe('login page', () => {
|
|
197
|
+
it('should redirect to dashboard on success', async () => {
|
|
198
|
+
await page.goto('/login');
|
|
199
|
+
await page.fill('#email', 'user@example.com');
|
|
200
|
+
await page.fill('#password', 'password');
|
|
201
|
+
await page.click('button[type="submit"]');
|
|
202
|
+
await expect(page).toHaveURL('/dashboard');
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Best Practices
|
|
208
|
+
|
|
209
|
+
1. **One assertion per test:** Clear failure messages
|
|
210
|
+
2. **Descriptive names:** `should_do_X_when_Y`
|
|
211
|
+
3. **Arrange-Act-Assert:** Clear test structure
|
|
212
|
+
4. **No test interdependence:** Each test isolated
|
|
213
|
+
5. **Fast tests:** Mock external dependencies
|
|
214
|
+
6. **Coverage targets:** Aim for 80%+ on critical paths
|
|
215
|
+
|
|
216
|
+
## When NOT to Use TDD
|
|
217
|
+
|
|
218
|
+
- Exploratory/prototyping work
|
|
219
|
+
- UI/visual components (use snapshot tests instead)
|
|
220
|
+
- Configuration/setup code
|
|
221
|
+
- Third-party integrations (use integration tests)
|
|
222
|
+
- Performance-critical inner loops (profile first)
|
|
223
|
+
|
|
224
|
+
## TDD Tools
|
|
225
|
+
|
|
226
|
+
| Language | Framework | Runner |
|
|
227
|
+
|----------|-----------|--------|
|
|
228
|
+
| TypeScript/JS | Jest, Vitest | npm test |
|
|
229
|
+
| Python | pytest | pytest |
|
|
230
|
+
| Go | testing | go test |
|
|
231
|
+
| Rust | built-in | cargo test |
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# GoopSpec UI Brand Guide
|
|
2
|
+
|
|
3
|
+
GoopSpec has a distinctive visual identity that differs from other AI development tools. Our aesthetic is **clean**, **organic**, and **professional**.
|
|
4
|
+
|
|
5
|
+
## Brand Symbol
|
|
6
|
+
|
|
7
|
+
The **hexagon** `⬢` represents GoopSpec - evoking molecules, honeycombs, and interconnected systems. It appears at the start of all GoopSpec UI elements.
|
|
8
|
+
|
|
9
|
+
## Message Formats
|
|
10
|
+
|
|
11
|
+
### Standard Header (Gates, Major Sections)
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
╭─ ⬢ GoopSpec ───────────────────────────────────────╮
|
|
15
|
+
│ │
|
|
16
|
+
│ SECTION TITLE │
|
|
17
|
+
│ │
|
|
18
|
+
╰────────────────────────────────────────────────────╯
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Compact Header (Status, Progress)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
⬢ GoopSpec · Section Title
|
|
25
|
+
──────────────────────────────────────────────────────
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Inline Indicator
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
⬢ message here
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Gate Messages
|
|
35
|
+
|
|
36
|
+
### Contract Gate (Specify Phase)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
╭─ ⬢ GoopSpec ───────────────────────────────────────╮
|
|
40
|
+
│ │
|
|
41
|
+
│ 🔒 CONTRACT GATE │
|
|
42
|
+
│ │
|
|
43
|
+
│ The specification is ready to lock. │
|
|
44
|
+
│ │
|
|
45
|
+
│ MUST HAVES: │
|
|
46
|
+
│ • Requirement 1 │
|
|
47
|
+
│ • Requirement 2 │
|
|
48
|
+
│ │
|
|
49
|
+
│ OUT OF SCOPE: │
|
|
50
|
+
│ • Excluded item │
|
|
51
|
+
│ │
|
|
52
|
+
│ ───────────────────────────────────────────── │
|
|
53
|
+
│ Type "confirm" to lock and proceed. │
|
|
54
|
+
│ │
|
|
55
|
+
╰────────────────────────────────────────────────────╯
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Acceptance Gate (Accept Phase)
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
╭─ ⬢ GoopSpec ───────────────────────────────────────╮
|
|
62
|
+
│ │
|
|
63
|
+
│ ✓ ACCEPTANCE GATE │
|
|
64
|
+
│ │
|
|
65
|
+
│ Implementation complete. Verification: │
|
|
66
|
+
│ │
|
|
67
|
+
│ ☑ Requirement 1 - verified │
|
|
68
|
+
│ ☑ Requirement 2 - verified │
|
|
69
|
+
│ │
|
|
70
|
+
│ Tests: 24/24 passing │
|
|
71
|
+
│ Build: Successful │
|
|
72
|
+
│ │
|
|
73
|
+
│ ───────────────────────────────────────────── │
|
|
74
|
+
│ Type "accept" to confirm completion. │
|
|
75
|
+
│ │
|
|
76
|
+
╰────────────────────────────────────────────────────╯
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Status Messages
|
|
80
|
+
|
|
81
|
+
### Workflow Status
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
⬢ GoopSpec · Status
|
|
85
|
+
──────────────────────────────────────────────────────
|
|
86
|
+
|
|
87
|
+
Project: my-project
|
|
88
|
+
Phase: ⬢ execute (wave 2/4)
|
|
89
|
+
Mode: standard
|
|
90
|
+
|
|
91
|
+
Progress: [████████░░░░] 67%
|
|
92
|
+
|
|
93
|
+
Tasks:
|
|
94
|
+
☑ Task 1.1 - complete
|
|
95
|
+
☑ Task 1.2 - complete
|
|
96
|
+
◉ Task 2.1 - in progress
|
|
97
|
+
○ Task 2.2 - pending
|
|
98
|
+
|
|
99
|
+
──────────────────────────────────────────────────────
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Phase Transition
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
⬢ GoopSpec · Phase Complete
|
|
106
|
+
──────────────────────────────────────────────────────
|
|
107
|
+
|
|
108
|
+
✓ Research phase complete
|
|
109
|
+
|
|
110
|
+
Findings saved to RESEARCH.md
|
|
111
|
+
3 recommendations identified
|
|
112
|
+
2 risks documented
|
|
113
|
+
|
|
114
|
+
Ready for: /goop-specify
|
|
115
|
+
|
|
116
|
+
──────────────────────────────────────────────────────
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Progress Indicators
|
|
120
|
+
|
|
121
|
+
### Task Status Icons
|
|
122
|
+
|
|
123
|
+
| Icon | Meaning |
|
|
124
|
+
|------|---------|
|
|
125
|
+
| `○` | Pending |
|
|
126
|
+
| `◉` | In Progress |
|
|
127
|
+
| `☑` | Complete |
|
|
128
|
+
| `☒` | Failed |
|
|
129
|
+
| `◌` | Skipped |
|
|
130
|
+
|
|
131
|
+
### Phase Icons
|
|
132
|
+
|
|
133
|
+
| Icon | Phase |
|
|
134
|
+
|------|-------|
|
|
135
|
+
| `📝` | Plan |
|
|
136
|
+
| `🔍` | Research |
|
|
137
|
+
| `📋` | Specify |
|
|
138
|
+
| `🔨` | Execute |
|
|
139
|
+
| `✓` | Accept |
|
|
140
|
+
|
|
141
|
+
### Mode Icons
|
|
142
|
+
|
|
143
|
+
| Icon | Mode |
|
|
144
|
+
|------|------|
|
|
145
|
+
| `⚡` | Quick |
|
|
146
|
+
| `📦` | Standard |
|
|
147
|
+
| `🏗️` | Comprehensive |
|
|
148
|
+
| `🎯` | Milestone |
|
|
149
|
+
|
|
150
|
+
## Completion Messages
|
|
151
|
+
|
|
152
|
+
### Task Complete
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
⬢ Task 2.1 complete (commit: abc123)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Wave Complete
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
⬢ GoopSpec · Wave Complete
|
|
162
|
+
──────────────────────────────────────────────────────
|
|
163
|
+
|
|
164
|
+
Wave 2 of 4 complete
|
|
165
|
+
|
|
166
|
+
Tasks: 3/3 ☑
|
|
167
|
+
Commits: 3 atomic commits
|
|
168
|
+
Time: 4m 32s
|
|
169
|
+
|
|
170
|
+
Ready for Wave 3
|
|
171
|
+
|
|
172
|
+
──────────────────────────────────────────────────────
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Milestone Complete
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
╭─ ⬢ GoopSpec ───────────────────────────────────────╮
|
|
179
|
+
│ │
|
|
180
|
+
│ 🎯 MILESTONE COMPLETE │
|
|
181
|
+
│ │
|
|
182
|
+
│ v1.0 Authentication System │
|
|
183
|
+
│ │
|
|
184
|
+
│ Delivered: │
|
|
185
|
+
│ • User login/logout │
|
|
186
|
+
│ • Session management │
|
|
187
|
+
│ • OAuth integration │
|
|
188
|
+
│ │
|
|
189
|
+
│ Archived: .goopspec/archive/v1.0-auth/ │
|
|
190
|
+
│ Learnings: 5 patterns extracted │
|
|
191
|
+
│ │
|
|
192
|
+
╰────────────────────────────────────────────────────╯
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Error & Warning Messages
|
|
196
|
+
|
|
197
|
+
### Warning
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
⬢ Warning: High comment density (35%)
|
|
201
|
+
Consider reducing comments in src/auth/login.ts
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Error
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
⬢ Error: Phase transition blocked
|
|
208
|
+
Cannot skip from 'plan' to 'execute'
|
|
209
|
+
Required: Complete 'research' phase first
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Deviation
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
⬢ Deviation (Rule 2): Added missing error handling
|
|
216
|
+
File: src/api/users.ts
|
|
217
|
+
Logged to ADL
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Character Reference
|
|
221
|
+
|
|
222
|
+
| Character | Use |
|
|
223
|
+
|-----------|-----|
|
|
224
|
+
| `⬢` | GoopSpec brand symbol |
|
|
225
|
+
| `╭╮╰╯` | Rounded box corners |
|
|
226
|
+
| `─` | Horizontal lines |
|
|
227
|
+
| `│` | Vertical lines |
|
|
228
|
+
| `·` | Separator dot |
|
|
229
|
+
| `○◉☑☒◌` | Task status |
|
|
230
|
+
| `►` | Action prompt |
|
|
231
|
+
|
|
232
|
+
## Color Guidelines
|
|
233
|
+
|
|
234
|
+
When color is available:
|
|
235
|
+
- **Green** `#65f463` - GoopSpec brand, success
|
|
236
|
+
- **Blue** - Information, links
|
|
237
|
+
- **Yellow** - Warnings, attention
|
|
238
|
+
- **Red** - Errors, failures
|
|
239
|
+
- **Gray** - Secondary info, disabled
|
|
240
|
+
|
|
241
|
+
## Anti-Patterns
|
|
242
|
+
|
|
243
|
+
### Don't Use
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
247
|
+
GOOPSPEC > SECTION
|
|
248
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
This heavy style with `━` characters and `>` separator is used by other tools.
|
|
252
|
+
|
|
253
|
+
### Do Use
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
╭─ ⬢ GoopSpec ───────────────────────────────────────╮
|
|
257
|
+
│ SECTION │
|
|
258
|
+
╰────────────────────────────────────────────────────╯
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
The rounded box with hexagon symbol is uniquely GoopSpec.
|