vibepro 0.1.0-alpha.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 +201 -0
- package/NOTICE +9 -0
- package/README.ja.md +448 -0
- package/README.md +520 -0
- package/agent-instructions/codex/AGENTS.vibepro.md +45 -0
- package/bin/vibepro.js +9 -0
- package/docs/assets/vibepro-header.png +0 -0
- package/package.json +51 -0
- package/skills/vibepro-diagnosis-packages/SKILL.md +133 -0
- package/skills/vibepro-human-review/SKILL.md +73 -0
- package/skills/vibepro-story-refactor/SKILL.md +89 -0
- package/skills/vibepro-workflow/SKILL.md +139 -0
- package/src/agent-harness-map.js +230 -0
- package/src/agent-harness-scanner.js +337 -0
- package/src/agent-review.js +2180 -0
- package/src/api-boundary-scanner.js +452 -0
- package/src/architecture-profiler.js +423 -0
- package/src/authorization-scoring.js +149 -0
- package/src/brainbase-importer.js +534 -0
- package/src/change-risk-classifier.js +195 -0
- package/src/check-packs.js +605 -0
- package/src/checkpoint-manager.js +233 -0
- package/src/cli.js +2213 -0
- package/src/code-quality-scanner.js +310 -0
- package/src/codex-manager.js +143 -0
- package/src/component-style-scanner.js +336 -0
- package/src/coverage-report.js +99 -0
- package/src/database-access-scanner.js +163 -0
- package/src/decision-records.js +315 -0
- package/src/design-modernize.js +1435 -0
- package/src/design-system.js +1732 -0
- package/src/diagnostic-engine.js +1945 -0
- package/src/diagram-requirement-resolver.js +194 -0
- package/src/doctor.js +677 -0
- package/src/environment-graph.js +424 -0
- package/src/execution-state.js +849 -0
- package/src/explore-evidence.js +425 -0
- package/src/flow-design-scanner.js +896 -0
- package/src/flow-verifier.js +887 -0
- package/src/gesture-interaction-scanner.js +330 -0
- package/src/graph-context.js +263 -0
- package/src/graphify-adapter.js +189 -0
- package/src/html-report.js +1035 -0
- package/src/journey-map.js +1299 -0
- package/src/language.js +48 -0
- package/src/lazy-pattern-detector.js +182 -0
- package/src/local-dev-scanner.js +135 -0
- package/src/managed-worktree-gate.js +187 -0
- package/src/managed-worktree.js +766 -0
- package/src/merge-manager.js +501 -0
- package/src/network-contract-scanner.js +442 -0
- package/src/nocodb-story-sync.js +386 -0
- package/src/oss-readiness-scanner.js +417 -0
- package/src/performance-evidence.js +756 -0
- package/src/performance-measurer.js +591 -0
- package/src/pr-manager.js +8220 -0
- package/src/presets.js +682 -0
- package/src/public-discovery-scanner.js +519 -0
- package/src/refactoring-delta-reporter.js +367 -0
- package/src/refactoring-opportunity-generator.js +797 -0
- package/src/regression-risk-scanner.js +146 -0
- package/src/repo-status.js +266 -0
- package/src/report-fingerprint.js +188 -0
- package/src/report-pr-body-prompt-template.md +108 -0
- package/src/report-pr-body-schema.json +95 -0
- package/src/report-store.js +135 -0
- package/src/report-validator.js +192 -0
- package/src/requirement-consistency.js +1066 -0
- package/src/runtime-info.js +134 -0
- package/src/self-dogfood-scanner.js +476 -0
- package/src/session-learning.js +164 -0
- package/src/skills-manager.js +157 -0
- package/src/spec-drift.js +378 -0
- package/src/spec-fingerprint.js +445 -0
- package/src/spec-prompt-template.md +155 -0
- package/src/spec-schema.json +219 -0
- package/src/spec-store.js +258 -0
- package/src/spec-validator.js +459 -0
- package/src/static-site-scanner.js +316 -0
- package/src/story-candidate-generator.js +85 -0
- package/src/story-catalog-generator.js +2813 -0
- package/src/story-html.js +156 -0
- package/src/story-manager.js +2144 -0
- package/src/story-task-generator.js +522 -0
- package/src/task-manager.js +1029 -0
- package/src/terminal-link-scanner.js +238 -0
- package/src/usage-report.js +417 -0
- package/src/verification-evidence.js +284 -0
- package/src/workspace.js +126 -0
package/README.md
ADDED
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
# VibePro
|
|
2
|
+
|
|
3
|
+
[](README.md)
|
|
4
|
+
[](README.ja.md)
|
|
5
|
+
[](package.json)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
VibePro is a CLI control plane for safer AI-driven PRs. It turns a feature story into architecture, spec, verification, agent-review, and PR evidence, then blocks PR creation until the required gates are satisfied.
|
|
9
|
+
|
|
10
|
+
VibePro does not rewrite your application by itself. It creates a repo-local `.vibepro/` workspace and stores the evidence that an engineer or coding agent needs before changing, reviewing, or merging code.
|
|
11
|
+
|
|
12
|
+
## Why VibePro
|
|
13
|
+
|
|
14
|
+
AI coding is fast until the final 20%: missing requirements, untested UI flows, broken API contracts, vague review scope, and PRs that look complete but are not actually usable. The bigger risk is that a broad workflow change can still look like an ordinary unit/API change.
|
|
15
|
+
|
|
16
|
+
VibePro is designed to make that final stretch explicit:
|
|
17
|
+
|
|
18
|
+
- Story: what user value must be delivered.
|
|
19
|
+
- Architecture: which boundaries and responsibilities must be preserved.
|
|
20
|
+
- Spec: which behaviors and invariants must hold.
|
|
21
|
+
- Code: what actually changed.
|
|
22
|
+
- Gates: which unit, integration, E2E, performance, security, and review evidence is still missing.
|
|
23
|
+
- Risk profile: whether the change is light, API contract, UI interaction, or workflow-heavy.
|
|
24
|
+
- PR evidence: what humans and AI agents should read before continuing.
|
|
25
|
+
|
|
26
|
+
The intended workflow is:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
Story -> Architecture -> Spec -> Code -> Risk-Adaptive Gates -> PR Evidence -> VibePro PR Create
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Once the story and architecture are clear, implementation can be handed to AI agents with much less ambiguity. When the change touches workflow state, runtime contracts, verification evidence, or review orchestration, VibePro expands the Gate DAG automatically instead of treating the PR like a narrow code change.
|
|
33
|
+
|
|
34
|
+
## Features
|
|
35
|
+
|
|
36
|
+
- Story, architecture, and spec aware PR preparation
|
|
37
|
+
- Requirement consistency checks against changed code
|
|
38
|
+
- Risk-adaptive Gate DAGs for completion dependencies and workflow-heavy release checks
|
|
39
|
+
- PR split planning for large or risky changes
|
|
40
|
+
- Verification evidence recording for unit, integration, E2E, build, and type-check results
|
|
41
|
+
- Playwright-based flow verification with network error detection
|
|
42
|
+
- Performance evidence definitions, run recording, and before/after comparison
|
|
43
|
+
- Diagnosis packs for UI, security, performance, architecture, PR readiness, and launch readiness
|
|
44
|
+
- Agent review requests and risk-adaptive review evidence recording
|
|
45
|
+
- `vibepro pr create` path enforcement so unresolved gates and waiver reasons are captured
|
|
46
|
+
- `design-system derive` for VibePro-native Design System artifacts from existing routes, code, style evidence, and optional Graphify context
|
|
47
|
+
- `design-modernize` planning and derived Design System generation for existing UI modernization without changing current information architecture
|
|
48
|
+
- Skills and Codex instruction installation for standardizing AI-driven workflows
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
VibePro requires Node.js 20 or newer.
|
|
53
|
+
|
|
54
|
+
VibePro is currently an alpha OSS release candidate. If it is not available in the public npm registry yet, do not run `npm install -D vibepro` or `pnpm add -D vibepro` and expect it to resolve from npm.
|
|
55
|
+
|
|
56
|
+
Use one of these installation modes:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# From a local clone of this repository
|
|
60
|
+
cd /path/to/vibepro
|
|
61
|
+
npm install
|
|
62
|
+
node bin/vibepro.js --help
|
|
63
|
+
|
|
64
|
+
# Or install from GitHub before the npm package is published
|
|
65
|
+
npm install -g git+https://github.com/Unson-LLC/vibepro.git
|
|
66
|
+
vibepro --help
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
After VibePro is published to npm:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx vibepro --help
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
For local development of VibePro itself:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm install
|
|
79
|
+
node bin/vibepro.js --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Optional Integration: Graphify
|
|
83
|
+
|
|
84
|
+
Graphify is optional but recommended for impact-scope discovery. VibePro does not bundle Graphify or redistribute Graphify code. When `--run-graphify` is used, VibePro invokes an externally installed `graphify` command. When `--from graphify-out` is used, VibePro imports artifacts that Graphify already generated.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
uv tool install graphifyy
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Install and use Graphify under Graphify's own license. You can still use most Story, diagnosis, checkpoint, and PR gate workflows without Graphify. Impact discovery will simply be less complete.
|
|
91
|
+
|
|
92
|
+
The examples below use `vibepro`. If you are running from a local clone instead of a global install, replace `vibepro` with `node /path/to/vibepro/bin/vibepro.js`.
|
|
93
|
+
|
|
94
|
+
## First Run: Choose Your Path
|
|
95
|
+
|
|
96
|
+
If you only want to diagnose a repository for the first time, start here. You do not need an existing Story ID.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
vibepro check all /path/to/repo --base <base-branch>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Then share:
|
|
103
|
+
|
|
104
|
+
- `.vibepro/checks/all/<run-id>/check.md`
|
|
105
|
+
- the top `Status`
|
|
106
|
+
- every `needs_review` / `fail` item
|
|
107
|
+
|
|
108
|
+
If you are working on a known feature or bug, create a local Story first:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
vibepro init /path/to/repo \
|
|
112
|
+
--story-id story-<short-name> \
|
|
113
|
+
--title "<feature or bug title>" \
|
|
114
|
+
--language en
|
|
115
|
+
|
|
116
|
+
vibepro check all /path/to/repo \
|
|
117
|
+
--story-id story-<short-name> \
|
|
118
|
+
--base <base-branch>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
If the repository already has VibePro Stories, list or map them before choosing one:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
vibepro story list /path/to/repo
|
|
125
|
+
vibepro story map /path/to/repo
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
For PR work, the main artifact is not the check report. Run PR preparation and open the generated cockpit:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
vibepro pr prepare /path/to/repo \
|
|
132
|
+
--story-id <story-id> \
|
|
133
|
+
--base <base-branch>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Open in this order:
|
|
137
|
+
|
|
138
|
+
1. `.vibepro/pr/<story-id>/review-cockpit.html`
|
|
139
|
+
2. `.vibepro/pr/<story-id>/gate-dag.html`
|
|
140
|
+
3. `.vibepro/pr/<story-id>/split-plan.html`
|
|
141
|
+
4. `.vibepro/pr/<story-id>/pr-body.md`
|
|
142
|
+
|
|
143
|
+
`<base-branch>` is repository-specific. Use the repository default branch, such as `origin/main`, `main`, `origin/develop`, or `develop`.
|
|
144
|
+
|
|
145
|
+
`pr prepare` classifies the change before building the Gate DAG. A narrow docs or UI change may stay light. A cross-surface workflow change becomes `workflow_heavy` and requires extra release evidence such as workflow replay, production path coverage, release confidence, and broader Agent Review roles. While required gates are unresolved, VibePro's `next_commands` point back to review or verification steps instead of PR creation.
|
|
146
|
+
|
|
147
|
+
## Quick Start
|
|
148
|
+
|
|
149
|
+
Initialize VibePro in a target repository:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npx vibepro init /path/to/repo \
|
|
153
|
+
--story-id story-internal-beta \
|
|
154
|
+
--title "Internal beta diagnosis" \
|
|
155
|
+
--view dev \
|
|
156
|
+
--period 2026-W18 \
|
|
157
|
+
--language en
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Run a story diagnosis:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx vibepro story diagnose /path/to/repo --id story-internal-beta --run-graphify
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Prepare PR evidence:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npx vibepro pr prepare /path/to/repo \
|
|
170
|
+
--base <base-branch> \
|
|
171
|
+
--story-id story-internal-beta
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Record the verification evidence that actually ran on the current git state:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx vibepro verify record /path/to/repo \
|
|
178
|
+
--id story-internal-beta \
|
|
179
|
+
--kind unit \
|
|
180
|
+
--status pass \
|
|
181
|
+
--command "npm test"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Run a checkpoint before treating implementation as ready:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npx vibepro checkpoint verification /path/to/repo \
|
|
188
|
+
--base <base-branch> \
|
|
189
|
+
--story-id story-internal-beta
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Prepare and record required Agent Reviews, then rerun PR preparation until the Gate DAG is ready:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
npx vibepro review prepare /path/to/repo --id story-internal-beta --stage gate
|
|
196
|
+
npx vibepro review status /path/to/repo --id story-internal-beta
|
|
197
|
+
npx vibepro pr prepare /path/to/repo --base <base-branch> --story-id story-internal-beta
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Create the PR through VibePro after `pr prepare` reports readiness:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npx vibepro pr create /path/to/repo \
|
|
204
|
+
--base <base-branch> \
|
|
205
|
+
--head <feature-branch> \
|
|
206
|
+
--story-id story-internal-beta
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Do not use raw `gh pr create` as the normal PR path; it bypasses VibePro's Gate DAG and waiver audit.
|
|
210
|
+
|
|
211
|
+
`<base-branch>` is repository-specific. Use the repository default branch, such as `origin/main`, `main`, `origin/develop`, or `develop`. VibePro also prints branch candidates during `init` and `pr prepare`.
|
|
212
|
+
|
|
213
|
+
## What VibePro Creates
|
|
214
|
+
|
|
215
|
+
VibePro stores its workspace under the target repository:
|
|
216
|
+
|
|
217
|
+
```text
|
|
218
|
+
.vibepro/
|
|
219
|
+
config.json
|
|
220
|
+
vibepro-manifest.json
|
|
221
|
+
diagnostics/
|
|
222
|
+
graphify/
|
|
223
|
+
pr/
|
|
224
|
+
qa/
|
|
225
|
+
raw/
|
|
226
|
+
stories/
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
The most important PR artifacts are:
|
|
230
|
+
|
|
231
|
+
- `pr-body.md`: PR body draft with story, risks, gates, and verification context.
|
|
232
|
+
- `review-cockpit.html`: human-readable review cockpit.
|
|
233
|
+
- `gate-dag.html`: completion dependency map.
|
|
234
|
+
- `split-plan.html`: PR split lanes and merge order.
|
|
235
|
+
- `pr-prepare.json`: machine-readable source of truth for agents.
|
|
236
|
+
|
|
237
|
+
Humans usually read the Markdown and HTML artifacts. AI agents should receive `pr-body.md`, `review-cockpit.html`, `gate-dag.html`, `split-plan.html`, and the relevant JSON artifacts.
|
|
238
|
+
|
|
239
|
+
## Common Workflows
|
|
240
|
+
|
|
241
|
+
### Diagnose A Repository
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
npx vibepro check all /path/to/repo --story-id <story-id> --base <base-branch>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Run a focused diagnosis pack:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
npx vibepro check ui /path/to/repo --story-id <story-id>
|
|
251
|
+
npx vibepro check security /path/to/repo --story-id <story-id>
|
|
252
|
+
npx vibepro check oss-readiness /path/to/repo --story-id <story-id>
|
|
253
|
+
npx vibepro check performance /path/to/repo --story-id <story-id>
|
|
254
|
+
npx vibepro check architecture /path/to/repo --story-id <story-id>
|
|
255
|
+
npx vibepro check pr-readiness /path/to/repo --story-id <story-id> --base <base-branch>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Verify A User Flow
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
npx vibepro verify flow /path/to/repo \
|
|
262
|
+
--base-url http://127.0.0.1:3000 \
|
|
263
|
+
--id <story-id>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
VibePro records Playwright evidence and treats API `4xx` / `5xx`, console errors, unhandled rejections, and known user-facing error messages as gate findings.
|
|
267
|
+
|
|
268
|
+
### Record Verification Evidence
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
npx vibepro verify record /path/to/repo \
|
|
272
|
+
--id <story-id> \
|
|
273
|
+
--kind unit \
|
|
274
|
+
--status pass \
|
|
275
|
+
--command "npm test"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Recorded evidence is reused by `pr prepare` and PR gates.
|
|
279
|
+
|
|
280
|
+
For workflow-heavy changes, unit/API evidence alone is not enough. VibePro also expects current, story-bound flow or E2E evidence with executable assertions, plus any risk-adaptive review roles required by the Gate DAG.
|
|
281
|
+
|
|
282
|
+
### Prepare Agent Reviews
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
npx vibepro review prepare /path/to/repo --id <story-id> --stage implementation
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Record a review result:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
npx vibepro review record /path/to/repo \
|
|
292
|
+
--id <story-id> \
|
|
293
|
+
--stage implementation \
|
|
294
|
+
--role regression_risk \
|
|
295
|
+
--status pass \
|
|
296
|
+
--summary "No regression risk found in the changed flow." \
|
|
297
|
+
--agent-system codex \
|
|
298
|
+
--execution-mode parallel_subagent \
|
|
299
|
+
--agent-id <spawned-subagent-id> \
|
|
300
|
+
--agent-thread-id <thread-id> \
|
|
301
|
+
--agent-model <model> \
|
|
302
|
+
--agent-closed
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
`gate:agent_review` treats a passing review as verified only when required
|
|
306
|
+
reviews include Codex/Claude Code parallel subagent provenance and closed
|
|
307
|
+
subagent lifecycle evidence. After receiving each result, close/shutdown the
|
|
308
|
+
review subagent before recording it, then pass `--agent-closed`. For Claude Code, use
|
|
309
|
+
`--agent-system claude_code` with the Task/subagent id, session id, or transcript
|
|
310
|
+
artifact. A human review can be recorded as audit context, but it is not a
|
|
311
|
+
substitute for a required subagent review:
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
npx vibepro review record /path/to/repo \
|
|
315
|
+
--id <story-id> \
|
|
316
|
+
--stage implementation \
|
|
317
|
+
--role regression_risk \
|
|
318
|
+
--status pass \
|
|
319
|
+
--summary "Manual review passed." \
|
|
320
|
+
--agent-system human \
|
|
321
|
+
--execution-mode manual_review \
|
|
322
|
+
--recorded-by <reviewer>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Manual review evidence remains useful audit context, but it does not satisfy a
|
|
326
|
+
required Agent Review Gate. If a runtime cannot spawn subagents, the coordinator
|
|
327
|
+
should block or record a separate waiver decision instead of marking the gate as
|
|
328
|
+
passed.
|
|
329
|
+
|
|
330
|
+
### Create A PR Through VibePro
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
npx vibepro pr prepare /path/to/repo --story-id <story-id> --base <base-branch>
|
|
334
|
+
npx vibepro pr create /path/to/repo --story-id <story-id> --base <base-branch> --head <feature-branch>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
`pr create` reuses the PR body generated by `pr prepare`, pushes the branch, and creates the GitHub PR. If critical gates are unresolved, it fails before creating a PR. Non-critical unresolved gates require both `--allow-needs-verification` and `--verification-waiver <reason>`.
|
|
338
|
+
|
|
339
|
+
### Modernize An Existing UI
|
|
340
|
+
|
|
341
|
+
For existing products, first derive the product-local Design System from current evidence. This creates the design decision space that later screen modernization and implementation gates must respect.
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
npx vibepro design-system init /path/to/repo \
|
|
345
|
+
--id <ds-id> \
|
|
346
|
+
--product <name>
|
|
347
|
+
|
|
348
|
+
npx vibepro design-system derive /path/to/repo \
|
|
349
|
+
--id <ds-id> \
|
|
350
|
+
--product <name> \
|
|
351
|
+
--routes /home,/map,/detail \
|
|
352
|
+
--brief "Japanese hotel discovery app with map exploration and product-native CTAs" \
|
|
353
|
+
--brief-file visual-foundations.md \
|
|
354
|
+
--from-code
|
|
355
|
+
|
|
356
|
+
npx vibepro design-system ingest-brief /path/to/repo \
|
|
357
|
+
--id <ds-id> \
|
|
358
|
+
--brief-file visual-foundations.md
|
|
359
|
+
|
|
360
|
+
npx vibepro design-system ingest /path/to/repo \
|
|
361
|
+
--id <ds-id> \
|
|
362
|
+
--bundle external-ds-bundle.json
|
|
363
|
+
|
|
364
|
+
npx vibepro design-system export /path/to/repo \
|
|
365
|
+
--id <ds-id> \
|
|
366
|
+
--format json
|
|
367
|
+
|
|
368
|
+
npx vibepro design-system validate /path/to/repo \
|
|
369
|
+
--id <ds-id> \
|
|
370
|
+
--story-id <story-id>
|
|
371
|
+
|
|
372
|
+
npx vibepro design-modernize derive-system /path/to/repo \
|
|
373
|
+
--id <story-id> \
|
|
374
|
+
--product <name> \
|
|
375
|
+
--routes /home,/map,/detail \
|
|
376
|
+
--brief "Japanese hotel discovery app with map exploration and product-native CTAs"
|
|
377
|
+
|
|
378
|
+
npx vibepro design-modernize plan /path/to/repo \
|
|
379
|
+
--id <story-id> \
|
|
380
|
+
--product <name> \
|
|
381
|
+
--routes /home,/map,/detail \
|
|
382
|
+
--base-url http://127.0.0.1:3000
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
`design-system init` creates an empty-but-valid VibePro-native Design System scaffold under `.vibepro/design-system/<ds-id>/`. Use it before route/code evidence exists. The scaffold records product id/name, authority boundaries, empty token/component/state/CTA sections, and a `needs_evidence` DS gate so an empty DS never silently passes.
|
|
386
|
+
|
|
387
|
+
`design-system derive` creates a VibePro-native Design System under `.vibepro/design-system/<ds-id>/`. It reads existing route code, style/token files, optional Graphify evidence, the product brief, and an optional visual foundations brief, then writes product semantics, theme tokens, semantic tokens, component roles, screen patterns, CTA policy, state semantics, density/navigation policies, implementation mapping, evidence coverage, and explicit DS gates.
|
|
388
|
+
|
|
389
|
+
`design-system ingest-brief` adds or replaces `visual-foundations.json` / `.md` on an existing native DS. Visual foundations capture design language, color roles, typography, density, component feel, composition, and native CTA language as reference evidence only. Current code, Graphify evidence, implementation mapping, and VibePro gates remain authoritative.
|
|
390
|
+
|
|
391
|
+
`design-system ingest` normalizes external DS bundles with tokens, components, guidelines, and CSS/JS string exports into VibePro-native DS sections. The external bundle remains reference evidence only; `authority` stays `vibepro_native_design_system`, `ds-gate.json` keeps fallback disabled, and likely secret values are omitted from persisted artifacts.
|
|
392
|
+
|
|
393
|
+
`design-system export` emits the aggregate DS JSON, the human-readable Markdown summary, or CSS custom-property aliases for semantic/theme tokens. CSS export returns `needs_tokens` when no semantic or theme tokens exist, instead of pretending an empty stylesheet is useful.
|
|
394
|
+
|
|
395
|
+
`design-system validate` checks the native DS against a selected Story/Spec/Architecture context before implementation. It writes `.vibepro/design-system/<ds-id>/validation/<story-id>.json` and `.md`, and explicitly reports DS drift, CTA priority, state semantics, component roles, navigation/density policy, Story alignment, and likely secret leakage.
|
|
396
|
+
|
|
397
|
+
Use this command before redesigning existing UI when the product already has real routes, CTAs, states, and data dependencies. The generated Design System is not a visual suggestion; it is the product-local constraint artifact that preserves existing UX invariants while making the UI more coherent.
|
|
398
|
+
|
|
399
|
+
`derive-system` converts the product brief and current UI evidence into a VibePro-derived Design System for a specific modernization story: product semantics, semantic color roles, component responsibilities, composition rules, visual-hypothesis policy, and explicit DS gates. The durable pattern is to build the design decision space before generating screen candidates.
|
|
400
|
+
|
|
401
|
+
`design-modernize` is for improving real product screens while preserving current routes, information architecture, CTAs, state behavior, and data dependencies. Optional design-system bundles or generated visual hypotheses are reference material; the VibePro-derived Design System, current screenshots, Graphify/Codex evidence, and Gate DAG remain authoritative.
|
|
402
|
+
|
|
403
|
+
Typical native Design System artifacts are written under `.vibepro/design-system/<ds-id>/`:
|
|
404
|
+
|
|
405
|
+
- `design-system.json` / `.md`: aggregate VibePro-native Design System
|
|
406
|
+
- `product-semantics.json`: product domain, language policy, interaction model, route intents, forbidden patterns
|
|
407
|
+
- `theme-tokens.json` and `semantic-tokens.json`: extracted raw style evidence and semantic token roles
|
|
408
|
+
- `component-roles.json` and `component-states.json`: component responsibilities and state semantics
|
|
409
|
+
- `screen-patterns.json`: route-family patterns, current CTAs, data dependencies, navigation targets, UX invariants
|
|
410
|
+
- `visual-foundations.json` / `.md`: external visual DS brief distilled as reference-only foundations
|
|
411
|
+
- `external-bundle.json`: external tokens/components/guidelines summarized as reference-only evidence
|
|
412
|
+
- `implementation-mapping.json`: route/component/file mapping for implementation handoff
|
|
413
|
+
- `evidence-coverage.json` and `ds-gate.json`: coverage findings and explicit DS gate clauses
|
|
414
|
+
- `validation/<story-id>.json` / `.md`: Story-specific DS drift and regression gate results
|
|
415
|
+
|
|
416
|
+
Recommended sequence:
|
|
417
|
+
|
|
418
|
+
1. Run `vibepro graph <repo> --run-graphify` when Graphify is available.
|
|
419
|
+
2. Run `vibepro design-system init <repo> --id <ds-id> --product <name>` when you need a DS scaffold before evidence exists.
|
|
420
|
+
3. Run `vibepro design-system derive <repo> --id <ds-id> --product <name> --routes <csv> --brief <text> --brief-file <file> --from-code`.
|
|
421
|
+
4. Optionally run `vibepro design-system ingest <repo> --id <ds-id> --bundle <file>` for external DS bundle references.
|
|
422
|
+
5. Export with `vibepro design-system export <repo> --id <ds-id> --format json|markdown|css` when another tool or human reviewer needs the DS.
|
|
423
|
+
6. Review `.vibepro/design-system/<ds-id>/evidence-coverage.json` and `ds-gate.json`.
|
|
424
|
+
7. Run `vibepro design-system validate <repo> --id <ds-id> --story-id <story-id>`.
|
|
425
|
+
8. Use `design-modernize derive-system` or `design-modernize plan` for screen-level work.
|
|
426
|
+
9. Treat generated visual ideas as hypotheses; implementation follows the VibePro-native Design System, current code, Story/Spec, and Gate DAG.
|
|
427
|
+
|
|
428
|
+
Typical artifacts are written under `.vibepro/design-modernize/<story-id>/`:
|
|
429
|
+
|
|
430
|
+
- `design-system-derivation.json` / `.md`: product semantics and Derived Design System summary
|
|
431
|
+
- `derived-design-system.json`: semantic tokens, component role map, CTA hierarchy, anti-patterns, and visual hypothesis policy
|
|
432
|
+
- `design-modernize.json`: screen-level modernization plan and Design Quality DAG
|
|
433
|
+
- `ds-gate.json`: explicit DS drift and UX regression clauses with fallback disabled
|
|
434
|
+
|
|
435
|
+
Use generated or external design ideas only as visual hypotheses. Before implementation, confirm that the spec keeps the current route, information architecture, CTA priority, state behavior, and data dependencies. Before PR creation, `vibepro pr prepare` must show the Design / Requirement / Unit / Integration / Agent Review gates as resolved for the current HEAD.
|
|
436
|
+
|
|
437
|
+
### Measure Performance
|
|
438
|
+
|
|
439
|
+
Define a story-specific metric:
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
npx vibepro performance define /path/to/repo \
|
|
443
|
+
--id <story-id> \
|
|
444
|
+
--metric-id session-switch.user-terminal-ready \
|
|
445
|
+
--user-story "User switches sessions and can type in the terminal" \
|
|
446
|
+
--start-condition "session row click" \
|
|
447
|
+
--completion-condition "owner and inputReady=true" \
|
|
448
|
+
--evidence-source browser_e2e \
|
|
449
|
+
--readiness-kind user_perceived
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Record before/after runs:
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
npx vibepro performance record /path/to/repo \
|
|
456
|
+
--id <story-id> \
|
|
457
|
+
--metric-id session-switch.user-terminal-ready \
|
|
458
|
+
--label before \
|
|
459
|
+
--status completed \
|
|
460
|
+
--duration-ms 2400
|
|
461
|
+
|
|
462
|
+
npx vibepro performance compare /path/to/repo --id <story-id>
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
VibePro only compares runs with compatible `metricId` and completion conditions. If comparison is impossible, it reports why.
|
|
466
|
+
|
|
467
|
+
## AI Agent Setup
|
|
468
|
+
|
|
469
|
+
Install bundled Claude / Claude Code skills into a target repository:
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
npx vibepro skills list
|
|
473
|
+
npx vibepro skills install /path/to/repo
|
|
474
|
+
npx vibepro skills verify /path/to/repo
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
Bundled skills:
|
|
478
|
+
|
|
479
|
+
- `vibepro-workflow`: Story / Architecture / Spec / Graphify / Gate operating order, including design-modernize and Agent Review flow.
|
|
480
|
+
- `vibepro-story-refactor`: refactor workflow that keeps Story, Architecture, Spec, task, code, and Gate evidence aligned.
|
|
481
|
+
- `vibepro-diagnosis-packages`: purpose-level UI, security, performance, architecture, PR, and launch readiness checks.
|
|
482
|
+
- `vibepro-human-review`: how to read PR readiness artifacts, split plans, review cockpit, and waiver decisions.
|
|
483
|
+
|
|
484
|
+
Install Codex instructions:
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
npx vibepro codex install /path/to/repo
|
|
488
|
+
npx vibepro codex verify /path/to/repo
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
The goal is to standardize how agents read stories, produce evidence, run reviews, and respect PR gates.
|
|
492
|
+
|
|
493
|
+
## Output Language
|
|
494
|
+
|
|
495
|
+
VibePro supports Japanese and English for human-facing CLI and report output:
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
npx vibepro init /path/to/repo --language ja
|
|
499
|
+
npx vibepro config language /path/to/repo --language en
|
|
500
|
+
npx vibepro pr prepare /path/to/repo --language en --base <base-branch>
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Machine-readable JSON keys remain stable and English-oriented.
|
|
504
|
+
|
|
505
|
+
## Documentation
|
|
506
|
+
|
|
507
|
+
- [Japanese README](README.ja.md)
|
|
508
|
+
- [Changelog](CHANGELOG.md)
|
|
509
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
510
|
+
- [Security policy](SECURITY.md)
|
|
511
|
+
- [OSS readiness architecture](https://github.com/Unson-LLC/vibepro/blob/main/docs/architecture/vibepro-oss-apache2-readiness.md)
|
|
512
|
+
- [OSS readiness spec](https://github.com/Unson-LLC/vibepro/blob/main/docs/specs/vibepro-oss-apache2-readiness.md)
|
|
513
|
+
|
|
514
|
+
## Project Status
|
|
515
|
+
|
|
516
|
+
VibePro is currently an alpha OSS release candidate. APIs, report schemas, and diagnosis packs may change before a stable public release.
|
|
517
|
+
|
|
518
|
+
## License
|
|
519
|
+
|
|
520
|
+
VibePro is licensed under the [Apache License 2.0](LICENSE).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## VibePro Codex Operating Rules
|
|
2
|
+
|
|
3
|
+
Use VibePro as the Story / Architecture / Spec / Graphify / Gate control plane for refactoring work.
|
|
4
|
+
|
|
5
|
+
When the user asks for VibePro work:
|
|
6
|
+
|
|
7
|
+
- Start from Story, then Architecture, then Spec, then Task, then Code, then Gate, then PR.
|
|
8
|
+
- Do not edit code first for VibePro refactors unless the user explicitly asks for an emergency fix.
|
|
9
|
+
- Use Graphify evidence before changing auth, data flow, runtime boundaries, UI state machines, or shared services.
|
|
10
|
+
- Treat `review-cockpit.html` as the human control plane and `human-review.json` as the machine-readable decision record.
|
|
11
|
+
- After implementation, run `vibepro pr prepare <repo> --story-id <story-id>` or the task-scoped equivalent.
|
|
12
|
+
- If `vibepro pr prepare` reports `gate_status.agent_review_instruction` or unresolved `gate:agent_review`, treat Agent Review as mandatory. The generated review plan is an instruction to dispatch Codex/Claude Code subagents when the coordinator runtime provides subagent capability; do not convert it into a user-permission wait or silently skip it.
|
|
13
|
+
- Run the parallel review workflow:
|
|
14
|
+
- Run every listed `vibepro review prepare <repo> --id <story-id> --stage <stage>` command.
|
|
15
|
+
- Open `.vibepro/reviews/<story-id>/<stage>/parallel-dispatch.md`.
|
|
16
|
+
- Start the listed role reviews in parallel, one subagent per role, with no file edits.
|
|
17
|
+
- When each subagent returns, close/shutdown that subagent thread before recording the result. Do not leave review subagents running.
|
|
18
|
+
- Record each returned result with the listed `vibepro review record` command, including Codex provenance and lifecycle evidence: `--agent-system codex --execution-mode parallel_subagent --agent-id <spawned-agent-id> --agent-closed` and `--agent-thread-id` or `--agent-call-id` when available.
|
|
19
|
+
- Rerun `vibepro pr prepare` and do not call the work complete until `gate:agent_review` passes or a blocking result is explicitly reported.
|
|
20
|
+
- If the runtime cannot spawn subagents, block or record a human waiver decision; manual review records do not satisfy required Agent Review Gate.
|
|
21
|
+
- Do not record a passing Agent Review as if it came from a subagent unless a subagent was actually spawned. A `pass` without Codex/Claude Code provenance is intentionally kept from satisfying `gate:agent_review`.
|
|
22
|
+
- Do not call raw `gh pr create` directly for VibePro work. Use `vibepro pr create` so Gate evidence and waiver checks are preserved.
|
|
23
|
+
- If Gates are unresolved, either add evidence, split the PR, block the PR, or record an explicit waiver reason.
|
|
24
|
+
- Keep JSON outputs as source-of-truth artifacts and HTML outputs as human review artifacts.
|
|
25
|
+
- When the user asks for a purpose-level check, use diagnosis packages instead of guessing low-level scanners:
|
|
26
|
+
- `vibepro check list`
|
|
27
|
+
- `vibepro check ui <repo>`
|
|
28
|
+
- `vibepro check security <repo>`
|
|
29
|
+
- `vibepro check performance <repo>`
|
|
30
|
+
- `vibepro check architecture <repo>`
|
|
31
|
+
- `vibepro check pr-readiness <repo> --base <ref> --head <ref>`
|
|
32
|
+
- `vibepro check launch-readiness <repo>`
|
|
33
|
+
- For performance improvement claims, define and compare Story-level performance evidence:
|
|
34
|
+
- `vibepro performance define <repo> --id <story-id> --metric-id <id> --user-story <text> --start-condition <text> --completion-condition <text> --evidence-source <type>`
|
|
35
|
+
- `vibepro performance record <repo> --id <story-id> --metric-id <id> --label before|after --status completed --duration-ms <ms> --evidence-source <type:ref:summary>`
|
|
36
|
+
- `vibepro performance compare <repo> --id <story-id>`
|
|
37
|
+
- Do not claim user-perceived speed improvement from server logs alone. Separate `server_side` metrics such as DB query/API readiness from `user_perceived` metrics such as DOM visible or interactive ready.
|
|
38
|
+
- If a performance comparison is not comparable, report improvement as unknown and include the missing marker or evidence source.
|
|
39
|
+
- For UI changes that introduce `/api/...` client calls, confirm the matching Next.js App Router or Pages Router route exists. Server Action/server function -> HTTP API replacements require route contract and network-aware E2E evidence; type-check alone is not enough.
|
|
40
|
+
- Before cleaning dirty repository worktrees, inspect the dirty state instead of stashing by reflex:
|
|
41
|
+
- Run `git status --short --branch`, `git diff --name-status`, `git diff --cached --name-status`, `git diff --stat`, `git diff --cached --stat`, and relevant `git reflog --date=iso`.
|
|
42
|
+
- If an external sync, merge, rebase, or another worktree advanced a checked-out branch, compare the dirty diff with the inverse of the commit range that moved the branch.
|
|
43
|
+
- Treat it as safe cleanup only after proving it is a stale reverse diff already represented in `HEAD`; otherwise report the files as possible user work.
|
|
44
|
+
|
|
45
|
+
For repository-local work, prefer the target repository's existing `AGENTS.md` instructions first, then apply these VibePro rules for VibePro-specific decisions.
|
package/bin/vibepro.js
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vibepro",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"description": "Product-intent gates and review evidence for AI coding agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/Unson-LLC/vibepro.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Unson-LLC/vibepro/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/Unson-LLC/vibepro#readme",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"ai-agents",
|
|
17
|
+
"ai-coding",
|
|
18
|
+
"codex",
|
|
19
|
+
"claude-code",
|
|
20
|
+
"developer-tools",
|
|
21
|
+
"pr-gate",
|
|
22
|
+
"pr-review",
|
|
23
|
+
"software-quality",
|
|
24
|
+
"vibe-coding"
|
|
25
|
+
],
|
|
26
|
+
"bin": {
|
|
27
|
+
"vibepro": "bin/vibepro.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"agent-instructions",
|
|
31
|
+
"bin",
|
|
32
|
+
"src",
|
|
33
|
+
"skills",
|
|
34
|
+
"docs/assets/vibepro-header.png",
|
|
35
|
+
"LICENSE",
|
|
36
|
+
"NOTICE",
|
|
37
|
+
"README.md",
|
|
38
|
+
"README.ja.md"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"test": "node --test",
|
|
42
|
+
"typecheck": "node --check bin/vibepro.js && node --check src/*.js",
|
|
43
|
+
"pack:dry-run": "npm pack --dry-run"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=20"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
}
|
|
51
|
+
}
|