skill-flow 1.0.2 → 1.0.3
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/README.md +24 -22
- package/README.zh.md +25 -24
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/services/doctor-service.js +1 -1
- package/dist/services/doctor-service.js.map +1 -1
- package/dist/services/skill-flow.js +1 -1
- package/dist/services/skill-flow.js.map +1 -1
- package/dist/services/source-service.js +4 -4
- package/dist/services/source-service.js.map +1 -1
- package/dist/tests/skill-flow.test.js +1427 -0
- package/dist/tests/skill-flow.test.js.map +1 -1
- package/dist/tui/config-app.js +1 -1
- package/dist/tui/config-app.js.map +1 -1
- package/dist/utils/format.js +1 -1
- package/dist/utils/format.js.map +1 -1
- package/package.json +10 -1
- package/.gstack/browse-network.log +0 -1
- package/.gstack/browse.json +0 -7
- package/.gstack/qa-reports/base-branch.txt +0 -1
- package/.gstack/qa-reports/qa-report-skill-flow-cli-2026-03-22.md +0 -159
- package/.gstack/qa-reports/qa-report-skill-manager-2026-03-22.md +0 -60
- package/docs/DESIGN.md +0 -407
- package/docs/PRD/PRD-1.0.0.md +0 -1862
- package/docs/PRD/renew/PRD-0.0.0.md +0 -26
- package/docs/PRD/renew/PRD-0.0.1.md +0 -408
- package/docs/PRD/renew/PRD-0.0.2.md +0 -705
- package/docs/PRD/renew/PRD-0.0.3.md +0 -740
- package/docs/PRD/renew/PRD-0.0.4.md +0 -1494
- package/docs/README.md +0 -242
- package/docs/plan/PLAN_v1.0.0.md +0 -663
- package/docs/plan/PLAN_v1.0.1.md +0 -845
- package/docs/refrences/README.md +0 -9
- package/docs/refrences/agent-skill-paths.md +0 -274
- package/docs/refrences/config-state-reconciliation.md +0 -199
- package/docs/refrences/naming-dedupe-warning-rules.md +0 -482
- package/img/img-1.jpg +0 -0
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# QA Report
|
|
2
|
-
|
|
3
|
-
Date: 2026-03-22
|
|
4
|
-
Target: `skill-flow` CLI v1.0.1
|
|
5
|
-
Mode: full functional regression
|
|
6
|
-
Base branch: `main`
|
|
7
|
-
Baseline commit: `c21868e`
|
|
8
|
-
Final status: `DONE_WITH_CONCERNS`
|
|
9
|
-
|
|
10
|
-
## Summary
|
|
11
|
-
|
|
12
|
-
- Automated baseline passed: `npm run build`, `npm test` (`49 passed`)
|
|
13
|
-
- Verified manually:
|
|
14
|
-
- Git add with `--path`
|
|
15
|
-
- `list`
|
|
16
|
-
- `update --all`
|
|
17
|
-
- `uninstall`
|
|
18
|
-
- GitHub tree URL add
|
|
19
|
-
- ClawHub add / update / uninstall
|
|
20
|
-
- Blocking issue found:
|
|
21
|
-
- `find` / `search` can hang for 15s+ on cold start because built-in catalog search waits on many remote Git repos
|
|
22
|
-
|
|
23
|
-
## Health Score
|
|
24
|
-
|
|
25
|
-
- Baseline: 82
|
|
26
|
-
- Final: 82
|
|
27
|
-
|
|
28
|
-
Rationale:
|
|
29
|
-
- Functional: mostly works
|
|
30
|
-
- Performance: materially degraded for `find`
|
|
31
|
-
- Reliability: build/tests clean, but discovery cold start is not ship-ready
|
|
32
|
-
|
|
33
|
-
## Tested Flows
|
|
34
|
-
|
|
35
|
-
### 1. Git add with path filtering
|
|
36
|
-
|
|
37
|
-
Command pattern:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
node dist/cli.js add <local-repo> --path skills/find-skills
|
|
41
|
-
node dist/cli.js list
|
|
42
|
-
node dist/cli.js update --all
|
|
43
|
-
node dist/cli.js uninstall repo
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Observed:
|
|
47
|
-
- add succeeded
|
|
48
|
-
- only one skill was registered
|
|
49
|
-
- list/update/uninstall all behaved correctly
|
|
50
|
-
|
|
51
|
-
### 2. GitHub tree URL add
|
|
52
|
-
|
|
53
|
-
Command:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
node dist/cli.js add https://github.com/vercel-labs/skills/tree/main/skills/find-skills
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Observed:
|
|
60
|
-
- succeeded
|
|
61
|
-
- installed as repo-level source `vercel-labs-skills`
|
|
62
|
-
- leaf count was `1`
|
|
63
|
-
- runtime was about `7.76s`
|
|
64
|
-
|
|
65
|
-
### 3. ClawHub lifecycle
|
|
66
|
-
|
|
67
|
-
Command pattern:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
node dist/cli.js add clawhub:find-skills-skill
|
|
71
|
-
node dist/cli.js update --all
|
|
72
|
-
node dist/cli.js list
|
|
73
|
-
node dist/cli.js uninstall clawhub-find-skills-skill
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Observed:
|
|
77
|
-
- add/update/uninstall all succeeded
|
|
78
|
-
- `list` reported the source as `PARTIAL` because of a metadata warning:
|
|
79
|
-
- `name should match parent directory name 'find-skills-skill'`
|
|
80
|
-
|
|
81
|
-
Assessment:
|
|
82
|
-
- functional flow passes
|
|
83
|
-
- warning is noisy but not a blocker
|
|
84
|
-
|
|
85
|
-
## Findings
|
|
86
|
-
|
|
87
|
-
### ISSUE-001
|
|
88
|
-
|
|
89
|
-
- Severity: critical
|
|
90
|
-
- Category: performance / functional
|
|
91
|
-
- Title: `find` does not complete promptly on cold start
|
|
92
|
-
- Status: deferred
|
|
93
|
-
|
|
94
|
-
What happens:
|
|
95
|
-
- `find` / `search` attempts to search the full built-in Git catalog set
|
|
96
|
-
- on a fresh state root, many built-in repos are not cached
|
|
97
|
-
- command can remain blocked for 15s+ even when a local result already exists
|
|
98
|
-
- `--json` has the same issue
|
|
99
|
-
|
|
100
|
-
Repro:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
export SKILL_FLOW_STATE_ROOT="$(mktemp -d)/state"
|
|
104
|
-
node dist/cli.js add <local-repo> --path skills/find-skills
|
|
105
|
-
perl -e 'alarm shift; exec @ARGV' 15 node dist/cli.js find find
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Observed output before timeout:
|
|
109
|
-
|
|
110
|
-
```text
|
|
111
|
-
1. find-skills local installed
|
|
112
|
-
Find useful skills quickly.
|
|
113
|
-
repo · skills/find-skills
|
|
114
|
-
next: already installed
|
|
115
|
-
|
|
116
|
-
2. Using Skills builtin-git
|
|
117
|
-
...
|
|
118
|
-
warning: Unable to refresh built-in source 'https://github.com/anthropics/skills.git': Error: Built-in source 'https://github.com/anthropics/skills.git' timed out.
|
|
119
|
-
...
|
|
120
|
-
time: command terminated abnormally
|
|
121
|
-
real 15.02
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Impact:
|
|
125
|
-
- makes `find` feel hung
|
|
126
|
-
- especially bad on first use or slow network
|
|
127
|
-
- blocks the main new v1.0.1 discovery path
|
|
128
|
-
|
|
129
|
-
Recommendation:
|
|
130
|
-
- redesign built-in catalog search so it does not depend on cloning every remote repo during request time
|
|
131
|
-
- acceptable solutions include a prebuilt index, explicit catalog sync step, or a lightweight remote metadata search path
|
|
132
|
-
|
|
133
|
-
### ISSUE-002
|
|
134
|
-
|
|
135
|
-
- Severity: medium
|
|
136
|
-
- Category: UX
|
|
137
|
-
- Title: ClawHub install shows as `PARTIAL` immediately after successful add
|
|
138
|
-
- Status: deferred
|
|
139
|
-
|
|
140
|
-
Observed:
|
|
141
|
-
|
|
142
|
-
```text
|
|
143
|
-
find-skills-skill PARTIAL 1 skills 0 targets, 1 warnings
|
|
144
|
-
warning: .: name should match parent directory name 'find-skills-skill'
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Impact:
|
|
148
|
-
- user sees warning/partial state on a successful install
|
|
149
|
-
- creates uncertainty about whether the source is healthy
|
|
150
|
-
|
|
151
|
-
## Ship Readiness
|
|
152
|
-
|
|
153
|
-
- `add`, `update`, and `uninstall` are in good shape
|
|
154
|
-
- `find/search` is functionally correct in some cases but not performance-safe enough for cold-start use
|
|
155
|
-
- v1.0.1 is not fully ship-ready if discovery is considered a headline feature
|
|
156
|
-
|
|
157
|
-
## PR Summary
|
|
158
|
-
|
|
159
|
-
QA found 2 issues, fixed 0, health score 82 -> 82.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# QA Report: skill-flow
|
|
2
|
-
|
|
3
|
-
Date: 2026-03-22
|
|
4
|
-
Mode: full CLI QA
|
|
5
|
-
Scope: build, unit tests, empty-state CLI flows, add/apply/update/uninstall end-to-end flow, interactive config smoke check
|
|
6
|
-
|
|
7
|
-
## Coverage
|
|
8
|
-
|
|
9
|
-
- `npm test`
|
|
10
|
-
- `npm run build`
|
|
11
|
-
- `node dist/cli.js --help`
|
|
12
|
-
- Empty state:
|
|
13
|
-
- `list`
|
|
14
|
-
- `doctor`
|
|
15
|
-
- `config`
|
|
16
|
-
- `uninstall missing`
|
|
17
|
-
- End-to-end fixture workflow:
|
|
18
|
-
- `add <git-source>`
|
|
19
|
-
- `list`
|
|
20
|
-
- `doctor`
|
|
21
|
-
- `applyDraft(...)` through app service with real state root + target roots
|
|
22
|
-
- `update --all` after upstream repo change
|
|
23
|
-
- `uninstall <sourceId>`
|
|
24
|
-
|
|
25
|
-
## Findings
|
|
26
|
-
|
|
27
|
-
### ISSUE-001
|
|
28
|
-
|
|
29
|
-
- Severity: medium
|
|
30
|
-
- Title: `uninstall` reported success for unknown workflow groups
|
|
31
|
-
- Repro:
|
|
32
|
-
1. Start with a fresh state root.
|
|
33
|
-
2. Run `node dist/cli.js uninstall missing`.
|
|
34
|
-
- Expected:
|
|
35
|
-
- Command should fail and say the workflow group is not registered.
|
|
36
|
-
- Actual:
|
|
37
|
-
- Command printed `Removed: missing` and exited `0`.
|
|
38
|
-
- Fix status: verified
|
|
39
|
-
|
|
40
|
-
## Fix
|
|
41
|
-
|
|
42
|
-
- Updated source removal to reject unknown workflow groups with `SOURCE_NOT_FOUND`.
|
|
43
|
-
- Added regression test coverage for uninstalling an unknown workflow group.
|
|
44
|
-
|
|
45
|
-
## Verification
|
|
46
|
-
|
|
47
|
-
- `npm test` -> 33 passed
|
|
48
|
-
- `npm run build` -> passed
|
|
49
|
-
- `node dist/cli.js uninstall missing` -> prints `Workflow group 'missing' is not registered.` and exits `1`
|
|
50
|
-
- End-to-end fixture flow still passes:
|
|
51
|
-
- add source
|
|
52
|
-
- apply targets
|
|
53
|
-
- doctor healthy
|
|
54
|
-
- update after source change
|
|
55
|
-
- uninstall existing source
|
|
56
|
-
- list returns empty state
|
|
57
|
-
|
|
58
|
-
## Summary
|
|
59
|
-
|
|
60
|
-
QA found 1 issue, fixed 1, deferred 0.
|
package/docs/DESIGN.md
DELETED
|
@@ -1,407 +0,0 @@
|
|
|
1
|
-
# DESIGN.md
|
|
2
|
-
|
|
3
|
-
Design system source of truth for `skill-flow`.
|
|
4
|
-
|
|
5
|
-
Last updated: 2026-03-21
|
|
6
|
-
Product mode: terminal-first
|
|
7
|
-
Primary product metaphor: Workflow Control Tower
|
|
8
|
-
|
|
9
|
-
## 1. Product Feeling
|
|
10
|
-
|
|
11
|
-
`skill-flow` should feel like a calm, high-signal operator console.
|
|
12
|
-
|
|
13
|
-
Not:
|
|
14
|
-
- a generic package manager
|
|
15
|
-
- a filesystem browser with extra buttons
|
|
16
|
-
- a web dashboard trapped inside a terminal
|
|
17
|
-
- a "developer tool" that assumes users enjoy reading paths and raw state
|
|
18
|
-
|
|
19
|
-
Yes:
|
|
20
|
-
- dense, deliberate, and structured
|
|
21
|
-
- grouped around workflows, not loose files
|
|
22
|
-
- built for repeat use, not one-time setup
|
|
23
|
-
- clear under stress: drift, invalid skills, broken projections, unavailable channels
|
|
24
|
-
|
|
25
|
-
The emotional promise is:
|
|
26
|
-
|
|
27
|
-
> "I can see what belongs together, what is active, what changed, and what needs attention."
|
|
28
|
-
|
|
29
|
-
## 2. Core Design Principles
|
|
30
|
-
|
|
31
|
-
1. Workflow first. The top-level object is the grouped workflow, not the individual skill leaf.
|
|
32
|
-
2. Action follows understanding. Users should understand a group before they project it.
|
|
33
|
-
3. Paths are metadata. Raw source locators and target directories are secondary detail.
|
|
34
|
-
4. Partial state is normal. Mixed validity and mixed agent availability are first-class states.
|
|
35
|
-
5. Text over decoration. Hierarchy comes from structure, spacing, labels, and state words before color or ornament.
|
|
36
|
-
6. Recovery is part of the UI. `doctor`, conflict repair, and broken-target guidance are core experiences.
|
|
37
|
-
7. Dense is acceptable; clutter is not. The tool may be information-rich, but every visible line must earn its place.
|
|
38
|
-
|
|
39
|
-
## 3. Product Vocabulary
|
|
40
|
-
|
|
41
|
-
Use these terms consistently in UI copy, docs, and future code comments:
|
|
42
|
-
|
|
43
|
-
- `Workflow Group`
|
|
44
|
-
The primary user-facing top-level unit.
|
|
45
|
-
- `Source`
|
|
46
|
-
Secondary metadata describing where a workflow group came from.
|
|
47
|
-
- `Contained Skills`
|
|
48
|
-
The leaf skills inside a workflow group.
|
|
49
|
-
- `Projects To`
|
|
50
|
-
The agent targets a workflow group is applied to.
|
|
51
|
-
- `Apply Preview`
|
|
52
|
-
The review step before writing changes.
|
|
53
|
-
- `Health`
|
|
54
|
-
The current operational state of a workflow group or projection target.
|
|
55
|
-
- `Drift`
|
|
56
|
-
Manifest/lock/on-disk mismatch or stale projection state.
|
|
57
|
-
|
|
58
|
-
Avoid these as primary labels:
|
|
59
|
-
- `Repo`
|
|
60
|
-
- `Inventory`
|
|
61
|
-
- `Deployment Unit`
|
|
62
|
-
- `Managed Artifact`
|
|
63
|
-
- `Channel Binding`
|
|
64
|
-
|
|
65
|
-
These are valid implementation concepts, not user-facing concepts.
|
|
66
|
-
|
|
67
|
-
## 4. Information Architecture
|
|
68
|
-
|
|
69
|
-
The default interaction model is three-layer:
|
|
70
|
-
|
|
71
|
-
1. Workflow Group
|
|
72
|
-
2. Contained Skills
|
|
73
|
-
3. Agent Projection
|
|
74
|
-
|
|
75
|
-
### Default wide layout
|
|
76
|
-
|
|
77
|
-
```text
|
|
78
|
-
+------------------------+--------------------------+----------------------+
|
|
79
|
-
| WORKFLOW GROUPS | GROUP DETAIL | AGENT PROJECTION |
|
|
80
|
-
| | | |
|
|
81
|
-
| frontend-workflow | Purpose | Claude Code |
|
|
82
|
-
| agent-ops | Contained Skills | Codex (.agents) |
|
|
83
|
-
| pdf-toolchain | Health / Warnings | OpenCode |
|
|
84
|
-
| | Update State | OpenClaw |
|
|
85
|
-
+------------------------+--------------------------+----------------------+
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Hierarchy by pane
|
|
89
|
-
|
|
90
|
-
Left pane:
|
|
91
|
-
- What groups exist
|
|
92
|
-
- Which ones are active
|
|
93
|
-
- Which ones need attention now
|
|
94
|
-
|
|
95
|
-
Middle pane:
|
|
96
|
-
- What this group is
|
|
97
|
-
- What skills it contains
|
|
98
|
-
- What is wrong with it, if anything
|
|
99
|
-
|
|
100
|
-
Right pane:
|
|
101
|
-
- Where it projects
|
|
102
|
-
- What will change
|
|
103
|
-
- What is blocked
|
|
104
|
-
|
|
105
|
-
## 5. Layout Rules
|
|
106
|
-
|
|
107
|
-
### Wide terminal
|
|
108
|
-
- Three panes
|
|
109
|
-
- Left pane is persistent navigation
|
|
110
|
-
- Middle and right panes are context panels
|
|
111
|
-
|
|
112
|
-
### Medium terminal
|
|
113
|
-
- Left pane remains persistent
|
|
114
|
-
- Middle/right become a visible toggle
|
|
115
|
-
- Current mode must be obvious: `DETAIL` or `PROJECTION`
|
|
116
|
-
|
|
117
|
-
### Narrow terminal
|
|
118
|
-
- Explicit step flow, not compressed columns
|
|
119
|
-
- Suggested order:
|
|
120
|
-
1. Select Workflow Group
|
|
121
|
-
2. Select Contained Skills
|
|
122
|
-
3. Select Agent Projection
|
|
123
|
-
4. Review Apply Preview
|
|
124
|
-
|
|
125
|
-
Never collapse three panes into unreadable tiny columns.
|
|
126
|
-
|
|
127
|
-
## 6. Typography
|
|
128
|
-
|
|
129
|
-
Terminal-first typography only.
|
|
130
|
-
|
|
131
|
-
### Primary choice
|
|
132
|
-
- Use the terminal's monospaced font or terminal-native system mono.
|
|
133
|
-
|
|
134
|
-
### Text roles
|
|
135
|
-
- Heading
|
|
136
|
-
Strong uppercase or strongly weighted sentence case
|
|
137
|
-
- Primary label
|
|
138
|
-
Workflow group name, selected channel name, step title
|
|
139
|
-
- Secondary metadata
|
|
140
|
-
Source locator, counts, path detail
|
|
141
|
-
- State label
|
|
142
|
-
`HEALTHY`, `UPDATE AVAILABLE`, `PARTIAL`, `BLOCKED`
|
|
143
|
-
- Hint text
|
|
144
|
-
Keyboard shortcuts, low-priority guidance
|
|
145
|
-
|
|
146
|
-
### Typography rules
|
|
147
|
-
- Prefer weight, indentation, and spacing over ASCII noise
|
|
148
|
-
- Do not overuse box drawing if it reduces scan speed
|
|
149
|
-
- Do not style every line equally
|
|
150
|
-
|
|
151
|
-
## 7. Spacing System
|
|
152
|
-
|
|
153
|
-
Use a tight terminal rhythm:
|
|
154
|
-
|
|
155
|
-
- `1x`
|
|
156
|
-
Between tightly related text lines
|
|
157
|
-
- `2x`
|
|
158
|
-
Between row groups or adjacent state blocks
|
|
159
|
-
- `4x`
|
|
160
|
-
Between panes, sections, or screen-level blocks
|
|
161
|
-
|
|
162
|
-
Rules:
|
|
163
|
-
- Rows need breathing room, but not web-app whitespace
|
|
164
|
-
- Warning blocks get extra separation
|
|
165
|
-
- Empty states should feel intentionally framed, not collapsed into surrounding UI
|
|
166
|
-
|
|
167
|
-
## 8. Color and Status Language
|
|
168
|
-
|
|
169
|
-
Color is optional support, never the primary carrier of meaning.
|
|
170
|
-
|
|
171
|
-
### Required rule
|
|
172
|
-
Every state must be understandable in monochrome.
|
|
173
|
-
|
|
174
|
-
### Primary status words
|
|
175
|
-
- `HEALTHY`
|
|
176
|
-
- `ACTIVE`
|
|
177
|
-
- `INACTIVE`
|
|
178
|
-
- `PARTIAL`
|
|
179
|
-
- `BLOCKED`
|
|
180
|
-
- `INVALID`
|
|
181
|
-
- `UPDATE AVAILABLE`
|
|
182
|
-
- `UP TO DATE`
|
|
183
|
-
- `DRIFT DETECTED`
|
|
184
|
-
|
|
185
|
-
### If color is available
|
|
186
|
-
- Healthy: restrained green accent
|
|
187
|
-
- Warning / partial: amber accent
|
|
188
|
-
- Error / blocked: red accent
|
|
189
|
-
- Informational / metadata: dim gray
|
|
190
|
-
|
|
191
|
-
Never encode selection, warning, or error using color alone.
|
|
192
|
-
|
|
193
|
-
## 9. Visual Style
|
|
194
|
-
|
|
195
|
-
The right aesthetic is "operator control plane," not "AI startup dashboard."
|
|
196
|
-
|
|
197
|
-
### Use
|
|
198
|
-
- strong row hierarchy
|
|
199
|
-
- restrained symbols
|
|
200
|
-
- quiet separators
|
|
201
|
-
- status-first language
|
|
202
|
-
- purposeful density
|
|
203
|
-
|
|
204
|
-
### Avoid
|
|
205
|
-
- card grids
|
|
206
|
-
- oversized headers
|
|
207
|
-
- generic hero framing
|
|
208
|
-
- decorative icon clutter
|
|
209
|
-
- dashboard widgets with equal visual weight
|
|
210
|
-
- faux-terminal gimmicks inside an actual terminal
|
|
211
|
-
|
|
212
|
-
## 10. Interaction Model
|
|
213
|
-
|
|
214
|
-
The interaction model should always follow:
|
|
215
|
-
|
|
216
|
-
```text
|
|
217
|
-
Select group -> inspect contained skills -> inspect targets -> preview changes -> apply
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### Important interaction rules
|
|
221
|
-
- No hidden auto-apply on first selection
|
|
222
|
-
- Preview is mandatory before mutations
|
|
223
|
-
- Broken state should expose a recovery action in-place
|
|
224
|
-
- The user should always know:
|
|
225
|
-
- what object is selected
|
|
226
|
-
- what step they are in
|
|
227
|
-
- what pressing Enter will do
|
|
228
|
-
|
|
229
|
-
## 11. Selection Model
|
|
230
|
-
|
|
231
|
-
Tree selection is one of the product's core design surfaces.
|
|
232
|
-
|
|
233
|
-
### Rules
|
|
234
|
-
- Parent rows show `empty / partial / full` state clearly
|
|
235
|
-
- Child rows are individually selectable
|
|
236
|
-
- Expanding a group should not destroy selection state
|
|
237
|
-
- Re-opening config should restore previous selection state
|
|
238
|
-
|
|
239
|
-
### Recommended state symbols
|
|
240
|
-
- `[ ]` unselected
|
|
241
|
-
- `[-]` partially selected
|
|
242
|
-
- `[x]` fully selected
|
|
243
|
-
|
|
244
|
-
Keep this boring and obvious. This is not a place for design novelty.
|
|
245
|
-
|
|
246
|
-
## 12. Screen-by-Screen Requirements
|
|
247
|
-
|
|
248
|
-
### 12.1 Empty product state
|
|
249
|
-
|
|
250
|
-
When the user has no workflow groups yet:
|
|
251
|
-
- explain what a workflow group is
|
|
252
|
-
- prompt one clear next action: add a source
|
|
253
|
-
- reassure the user what will happen next
|
|
254
|
-
|
|
255
|
-
Bad:
|
|
256
|
-
- `No items`
|
|
257
|
-
|
|
258
|
-
Good:
|
|
259
|
-
- `No workflow groups yet`
|
|
260
|
-
- `Add a Git source to discover a grouped set of related skills.`
|
|
261
|
-
- Primary action: `Add Source`
|
|
262
|
-
|
|
263
|
-
### 12.2 Workflow group list
|
|
264
|
-
|
|
265
|
-
Each row should show:
|
|
266
|
-
- workflow group name
|
|
267
|
-
- active target count
|
|
268
|
-
- leaf count
|
|
269
|
-
- current health
|
|
270
|
-
- update badge if relevant
|
|
271
|
-
|
|
272
|
-
Do not show full source locator in the row body by default.
|
|
273
|
-
|
|
274
|
-
### 12.3 Group detail pane
|
|
275
|
-
|
|
276
|
-
Must answer:
|
|
277
|
-
- What is this workflow group for?
|
|
278
|
-
- Which skills are inside it?
|
|
279
|
-
- Are any leaf skills invalid or skipped?
|
|
280
|
-
- What changed recently?
|
|
281
|
-
|
|
282
|
-
### 12.4 Projection pane
|
|
283
|
-
|
|
284
|
-
Must answer:
|
|
285
|
-
- Which targets are available?
|
|
286
|
-
- Which targets are active?
|
|
287
|
-
- Which targets are blocked?
|
|
288
|
-
- What strategy will be used?
|
|
289
|
-
|
|
290
|
-
### 12.5 Apply preview
|
|
291
|
-
|
|
292
|
-
Must show:
|
|
293
|
-
- create / update / remove / noop counts
|
|
294
|
-
- warnings
|
|
295
|
-
- blocked actions
|
|
296
|
-
- exact group currently being applied
|
|
297
|
-
|
|
298
|
-
The preview should feel like a confirmation checkpoint, not a scary diff wall.
|
|
299
|
-
|
|
300
|
-
### 12.6 Doctor / repair
|
|
301
|
-
|
|
302
|
-
`doctor` is not just a diagnostics dump. It is a guided repair surface.
|
|
303
|
-
|
|
304
|
-
Must answer:
|
|
305
|
-
- what is wrong
|
|
306
|
-
- why it matters
|
|
307
|
-
- what can be repaired now
|
|
308
|
-
- what the user needs to do manually
|
|
309
|
-
|
|
310
|
-
## 13. State Coverage
|
|
311
|
-
|
|
312
|
-
Every major flow must define visible behavior for:
|
|
313
|
-
- loading
|
|
314
|
-
- empty
|
|
315
|
-
- error
|
|
316
|
-
- success
|
|
317
|
-
- partial
|
|
318
|
-
|
|
319
|
-
### Product-specific reminder
|
|
320
|
-
Partial state is common here:
|
|
321
|
-
- some leafs valid, some invalid
|
|
322
|
-
- some targets available, some blocked
|
|
323
|
-
- some projections healthy, some drifted
|
|
324
|
-
|
|
325
|
-
Design for this explicitly.
|
|
326
|
-
|
|
327
|
-
## 14. Accessibility
|
|
328
|
-
|
|
329
|
-
Even in terminal-first UI, accessibility is mandatory.
|
|
330
|
-
|
|
331
|
-
### Requirements
|
|
332
|
-
- Full keyboard operation
|
|
333
|
-
- Clear focus indication
|
|
334
|
-
- Selection state not color-only
|
|
335
|
-
- Errors and warnings labeled with explicit text
|
|
336
|
-
- Stable reading order in each screen
|
|
337
|
-
- Shortcuts visible in-context, not hidden in docs only
|
|
338
|
-
|
|
339
|
-
### Copy requirement
|
|
340
|
-
System messages should explain the problem in human language first, implementation detail second.
|
|
341
|
-
|
|
342
|
-
Bad:
|
|
343
|
-
- `Lock state mismatch`
|
|
344
|
-
|
|
345
|
-
Better:
|
|
346
|
-
- `This workflow group's saved state no longer matches what's on disk.`
|
|
347
|
-
|
|
348
|
-
## 15. Motion
|
|
349
|
-
|
|
350
|
-
Motion is not part of terminal-first MVP.
|
|
351
|
-
|
|
352
|
-
Do not simulate motion for style.
|
|
353
|
-
If a transition exists, it should clarify progression, not decorate it.
|
|
354
|
-
|
|
355
|
-
## 16. Copy Style
|
|
356
|
-
|
|
357
|
-
Tone:
|
|
358
|
-
- precise
|
|
359
|
-
- calm
|
|
360
|
-
- operational
|
|
361
|
-
- not cute
|
|
362
|
-
- not robotic
|
|
363
|
-
|
|
364
|
-
Prefer:
|
|
365
|
-
- `Projects To`
|
|
366
|
-
- `Update Available`
|
|
367
|
-
- `No supported agents detected`
|
|
368
|
-
- `Some contained skills were skipped because their SKILL.md is invalid`
|
|
369
|
-
|
|
370
|
-
Avoid:
|
|
371
|
-
- vague system-speak
|
|
372
|
-
- overfriendly empty platitudes
|
|
373
|
-
- unexplained abbreviations
|
|
374
|
-
|
|
375
|
-
## 17. Default Decisions For MVP
|
|
376
|
-
|
|
377
|
-
These are the default design decisions unless explicitly revised:
|
|
378
|
-
|
|
379
|
-
1. Top-level UI label is `Workflow Group`.
|
|
380
|
-
2. `Source` appears only as secondary metadata.
|
|
381
|
-
3. First release is Git-only in the visible product experience.
|
|
382
|
-
4. `Codex (.agents/skills)` is a single surfaced target.
|
|
383
|
-
5. `Apply to all agents` only appears in review/preview flow, not as the first default affordance.
|
|
384
|
-
6. Raw paths are hidden by default.
|
|
385
|
-
7. `doctor` exists both as a command and as an inline recovery affordance from broken rows.
|
|
386
|
-
8. Three-pane layout is the ideal view; medium and narrow terminals degrade intentionally, not automatically.
|
|
387
|
-
|
|
388
|
-
## 18. Implementation Guidance
|
|
389
|
-
|
|
390
|
-
When code is eventually written, the design system should influence:
|
|
391
|
-
- terminal copy
|
|
392
|
-
- pane hierarchy
|
|
393
|
-
- state labels
|
|
394
|
-
- keyboard shortcut visibility
|
|
395
|
-
- warning and repair presentation
|
|
396
|
-
|
|
397
|
-
This file should be treated as the visual and interaction source of truth for MVP terminal UX.
|
|
398
|
-
|
|
399
|
-
## 19. Future Expansion
|
|
400
|
-
|
|
401
|
-
If the product grows beyond terminal-first MVP, revisit this file and extend:
|
|
402
|
-
- richer brand system
|
|
403
|
-
- web or desktop surfaces
|
|
404
|
-
- illustration or motion language
|
|
405
|
-
- broader source discovery UX
|
|
406
|
-
|
|
407
|
-
For now, restraint is the right design decision.
|