jig-ui 0.21.0 → 0.22.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/CHANGELOG.md +50 -0
- package/README.md +149 -1
- package/dist/index.js +476 -172
- package/package.json +1 -1
- package/templates/COMMAND.md.tmpl +215 -21
- package/templates/SKILL.md.tmpl +5 -0
- package/templates/command-metadata.json +5 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jig-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "A design system for coding agents. 143 numbered UI rules, brand x mode design tokens, and an installer for Claude Code, Codex, Cursor and opencode.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -6,7 +6,7 @@ these, say so, list them, and stop.
|
|
|
6
6
|
|
|
7
7
|
There are two kinds of subcommand, and they are not run the same way.
|
|
8
8
|
|
|
9
|
-
**CLI-backed** — `install`, `update`, `init`, `check`, `explain`, `verdicts`, `gate`, `probe`, `seo`. Run the
|
|
9
|
+
**CLI-backed** — `install`, `update`, `init`, `check`, `explain`, `verdicts`, `gate`, `probe`, `seo`, `ship`. Run the
|
|
10
10
|
matching command with `{{scripts_path}}`, passing the flags through unchanged,
|
|
11
11
|
then do the work below for that subcommand. Read the command's full output —
|
|
12
12
|
findings are ordered by severity, not position, so `head`, `tail`, `grep` and
|
|
@@ -25,10 +25,14 @@ decide project-wide decisions, and the reason for each once per project
|
|
|
25
25
|
spec what exactly is being built: its smallest useful version, at every screen size
|
|
26
26
|
mockup low-fidelity design of that spec, reviewed before any code
|
|
27
27
|
make high-fidelity: the actual page or feature, built from the spec & mockup
|
|
28
|
-
critique scrutinises what was built against the rules, its spec & mockup
|
|
28
|
+
critique scrutinises what was built against the rules, its spec & mockup;
|
|
29
|
+
now, or later: a page judged as it stands gets the same verdicts
|
|
29
30
|
|
|
30
31
|
tweak a small change the approved mockup does not show: decided if it is a
|
|
31
32
|
decision, specced, built, and re-judged where it could matter
|
|
33
|
+
|
|
34
|
+
ship everything Jig checks, with nothing optional: critiques every page
|
|
35
|
+
that owes one, and says what Jig does not check
|
|
32
36
|
```
|
|
33
37
|
|
|
34
38
|
## init
|
|
@@ -50,10 +54,16 @@ the answer and the CLI is not. So, first:
|
|
|
50
54
|
`editorial` for first-visit content, `product` for the signed-in app,
|
|
51
55
|
`operator` for dense daily tools. State the mapping in one line and let them
|
|
52
56
|
correct it.
|
|
53
|
-
3. **
|
|
54
|
-
`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
3. **Ask when pages should be critiqued**: after every build, left for
|
|
58
|
+
`{{command_prefix}}ship`, or decided page by page. Page by page is the default
|
|
59
|
+
and writes nothing; each spec then asks. The other two go in as
|
|
60
|
+
`"critique": "each"` or `"critique": "at-ship"`. It is how the owner works,
|
|
61
|
+
so it is asked here, not in `decide`.
|
|
62
|
+
4. **Write `jig.config.json`** with those surfaces, and the critique answer,
|
|
63
|
+
before running anything. `init` reads an existing config and honours it —
|
|
64
|
+
writing one mode file per declared mode — so this is how a decision reaches
|
|
65
|
+
the tokens.
|
|
66
|
+
5. **Then run the command.**
|
|
57
67
|
|
|
58
68
|
Where there is genuinely one surface, say so and move on; the point is that the
|
|
59
69
|
mode was chosen rather than defaulted into.
|
|
@@ -289,6 +299,7 @@ the example shows the shape. Say it is an example, not a suggestion.
|
|
|
289
299
|
> plan goes straight to sign-up. Nothing on this page may ask for a sales
|
|
290
300
|
> call."*
|
|
291
301
|
|
|
302
|
+
|
|
292
303
|
**Ask about the phone by name.** What does the reader see first on a phone, and
|
|
293
304
|
what moves, stacks, or goes behind a control?
|
|
294
305
|
> *For example: "the plans come first on the phone" — that is the answer this
|
|
@@ -297,6 +308,16 @@ what moves, stacks, or goes behind a control?
|
|
|
297
308
|
describes the wide screen, the phone composition will be derived from it rather
|
|
298
309
|
than designed — and a derived phone composition is a squeezed desktop.
|
|
299
310
|
|
|
311
|
+
**Last, ask when this page is critiqued: after each build, or left for
|
|
312
|
+
`ship`?** It is the one question about how the owner works rather than what the
|
|
313
|
+
page is, so it comes after all of them. Skip it only where the owner has already
|
|
314
|
+
said, for this page or in asking for the spec. Where the page sets up what later
|
|
315
|
+
pages reuse (a header, a card, a layout), say why now is worth it; otherwise
|
|
316
|
+
offer the project's default from `{{config_file}}`, or "each" where it has none.
|
|
317
|
+
Write the answer as `critique: each` or `critique: at-ship`.
|
|
318
|
+
> *For example: "each: every page has this header, so a finding in it is fixed
|
|
319
|
+
> once, now, not in ten pages later."*
|
|
320
|
+
|
|
300
321
|
### 2. Run `L-01`
|
|
301
322
|
|
|
302
323
|
Read `L-01 · Layout method` in `{{rules_path}}/03-patterns.md` and run its five
|
|
@@ -353,9 +374,10 @@ later: [social sign-in, remember this device] # cut from V1, by name — the n
|
|
|
353
374
|
indexable: true # from the mode — editorial yes, product/operator no. Say why when you override it.
|
|
354
375
|
title: "Pricing — Hoistline" # ≤ 60 characters, the search result's first line
|
|
355
376
|
description: "Three plans, every price visible. No sales call." # ≤ 155
|
|
356
|
-
mockup: pending #
|
|
377
|
+
mockup: pending # approved or skipped, quoting the user: approved by `mockup`, skipped by whichever command they said it to
|
|
357
378
|
mockup_at: # where the approved drawing is: a .jig/mockups path, or a Figma or Stitch link
|
|
358
379
|
deviations: [] # `make` writes here; `spec` leaves it empty
|
|
380
|
+
critique: each # optional: each, or at-ship; left out, the project's default in {{config_file}}
|
|
359
381
|
---
|
|
360
382
|
```
|
|
361
383
|
|
|
@@ -452,9 +474,83 @@ to the spec, never the spec to the decisions.
|
|
|
452
474
|
say in the confirmation message which fields those are, so the user can decide
|
|
453
475
|
them instead.
|
|
454
476
|
|
|
477
|
+
### 3c. Have it checked by a reader who did not write it
|
|
478
|
+
|
|
479
|
+
Step 3b checks the spec against the decisions. Nothing after it checks the spec
|
|
480
|
+
against the owner's words or against the facts it states: `make` builds a
|
|
481
|
+
confirmed spec as written, and `critique` compares the page to the spec, never
|
|
482
|
+
the spec to what is true. On jig-site a confirmed spec for a docs chapter carried
|
|
483
|
+
seven errors to the built page, among them a procedure Jig does not have and a
|
|
484
|
+
lock written at the wrong moment, and the owner had confirmed it. The writer
|
|
485
|
+
cannot catch these, for the same reason a builder cannot review its own page.
|
|
486
|
+
|
|
487
|
+
**Delegate to a subagent.** Give it the spec, `DECISIONS.md`, the owner's messages
|
|
488
|
+
from this conversation, and read access to the project. Not your reasoning, and
|
|
489
|
+
not your summary of what the owner meant. It writes
|
|
490
|
+
`.jig/specs/<name>.checked.json`:
|
|
491
|
+
|
|
492
|
+
```json
|
|
493
|
+
{
|
|
494
|
+
"spec": "sha256 of the spec file with its confirmed: line removed",
|
|
495
|
+
"quotes": [
|
|
496
|
+
{ "quote": "Only where the steps differ by path", "said": "the owner, this conversation", "holds": true }
|
|
497
|
+
],
|
|
498
|
+
"facts": [
|
|
499
|
+
{ "claim": "the gate records the verdicts when a critique or tweak stops", "source": "templates/COMMAND.md.tmpl:1360", "holds": false, "note": "the spec says only after the findings are fixed" },
|
|
500
|
+
{ "claim": "Stitch needs an API key", "source": "https://stitch.withgoogle.com", "holds": "unchecked", "note": "no network access in this session" }
|
|
501
|
+
],
|
|
502
|
+
"copy": ["Before you start"],
|
|
503
|
+
"conditions": [{ "owner": "three columns from 1280 up", "spec": "desktop: three columns at 1280 and wider" }],
|
|
504
|
+
"open": ["density of the chapter list: unspecified, make chooses"]
|
|
505
|
+
}
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
- **`quotes`**: every quotation the spec gives as the owner's, and where the owner
|
|
509
|
+
said it. One the owner's words do not hold is removed from the spec or put back
|
|
510
|
+
as they said it.
|
|
511
|
+
- **`facts`**: every statement the spec makes about how something works (the
|
|
512
|
+
product, an API, an existing page, a file, a tool), with the source the reader
|
|
513
|
+
opened: `path` or `path:line` in the project, or a URL. `holds` is `true`,
|
|
514
|
+
`false` or `"unchecked"`, with a `note` for anything but `true`. A fact that
|
|
515
|
+
does not hold is fixed in the spec before anyone is asked; `"unchecked"` says why
|
|
516
|
+
it could not be opened.
|
|
517
|
+
- **`copy`**: the words the spec writes for the page to show as written:
|
|
518
|
+
headings, labels, sentences.
|
|
519
|
+
- **`conditions`**: each condition the owner gave, beside the spec's line for it.
|
|
520
|
+
- **`open`**: every `unspecified` field and every **Unresolved** item the spec
|
|
521
|
+
touches.
|
|
522
|
+
|
|
523
|
+
Fix what it found, then have the spec checked again: the record is of the spec
|
|
524
|
+
you show, and the gate compares its `spec` checksum to the file. **If you cannot
|
|
525
|
+
delegate, write the record yourself, with `"reader": "the writer"` in it, and say
|
|
526
|
+
in the confirmation message that nobody else checked the spec.** That is an
|
|
527
|
+
honest gap the owner can close by reading more closely; a check you ran on your
|
|
528
|
+
own words and reported as independent is not.
|
|
529
|
+
|
|
455
530
|
### 4. Get it confirmed
|
|
456
531
|
|
|
457
|
-
Show the spec and
|
|
532
|
+
Show the spec, and with it the sheet the owner checks it by, from
|
|
533
|
+
`<name>.checked.json`:
|
|
534
|
+
|
|
535
|
+
- **Your words:** each quotation given as theirs, and where they said it.
|
|
536
|
+
- **Facts:** each claim and its source, the ones that could not be checked
|
|
537
|
+
first.
|
|
538
|
+
- **Copy the page will show as written.**
|
|
539
|
+
- **Your conditions**, beside the lines that carry them.
|
|
540
|
+
- **Left for you:** the `open` items, which they can decide now.
|
|
541
|
+
|
|
542
|
+
The owner confirms a spec by checking it, and the sheet is what makes that a few
|
|
543
|
+
minutes' work rather than a reread. Ask them to confirm it. Then **stop**.
|
|
544
|
+
|
|
545
|
+
If, in confirming, they also say to skip the mockup, record that too:
|
|
546
|
+
`mockup: skipped — "<their words>"`.
|
|
547
|
+
|
|
548
|
+
**Checking a spec for the owner.** When the owner asks an agent to check a spec
|
|
549
|
+
and confirm it on their behalf, that agent works from the same sheet and confirms
|
|
550
|
+
only what it checked itself: it opens every source marked `"unchecked"` and
|
|
551
|
+
every one it doubts, reads the copy as the person arriving would, and holds each
|
|
552
|
+
condition to the owner's own words. Anything it could not check it names to the
|
|
553
|
+
owner instead of confirming.
|
|
458
554
|
|
|
459
555
|
`confirmed: true` records that **the user said so in their own response**. You
|
|
460
556
|
may not set it on their behalf, and you may not treat your own summary,
|
|
@@ -673,6 +769,27 @@ Then ask **structural** questions, not whether they like it: is the most importa
|
|
|
673
769
|
thing the first thing seen at each size? Does anything belong in a different group?
|
|
674
770
|
Is anything here that V1 does not need?
|
|
675
771
|
|
|
772
|
+
**Give them the sheet they check it by.** The drawing is the confirmed spec,
|
|
773
|
+
drawn, so what the owner checks first is that it matches. The gate has checked
|
|
774
|
+
that each region is labelled; whether each is drawn the way the spec says is
|
|
775
|
+
theirs to see. Size by size, set the spec's line beside what the frame shows:
|
|
776
|
+
|
|
777
|
+
- the regions in the spec's order, what comes first, what is grouped, where each
|
|
778
|
+
sits;
|
|
779
|
+
- `nav:` for that size, and the navigation drawn;
|
|
780
|
+
- each state in `states:` that changes the layout, and where it is drawn;
|
|
781
|
+
- anything the spec says a part does that a still drawing cannot show, quoted
|
|
782
|
+
from the spec. Name only what the spec says: a behaviour it does not mention is
|
|
783
|
+
not yours to raise here, and one you add is a spec change;
|
|
784
|
+
- the owner's conditions from the spec, beside the lines that carry them;
|
|
785
|
+
- and what the drawing leaves out on purpose: `later:`, and colour, type and
|
|
786
|
+
spacing, which the tokens settle.
|
|
787
|
+
|
|
788
|
+
**Checking a mockup for the owner.** When the owner asks an agent to check the
|
|
789
|
+
drawing and approve it on their behalf, that agent renders every frame, compares
|
|
790
|
+
each with its line in the spec, and approves only what it checked itself. What
|
|
791
|
+
it could not check, it names to the owner instead of approving.
|
|
792
|
+
|
|
676
793
|
### 4. Every change goes into the spec first
|
|
677
794
|
|
|
678
795
|
When the review moves, adds, cuts or regroups anything, **edit the spec**, then
|
|
@@ -686,13 +803,20 @@ confirmed again.
|
|
|
686
803
|
|
|
687
804
|
### 5. Record the outcome in the user's words
|
|
688
805
|
|
|
689
|
-
- The user approves → set `mockup: approved` in the spec,
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
or
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
806
|
+
- The user approves → set `mockup: approved — "<their words>"` in the spec,
|
|
807
|
+
quoting the reply that approved it, and `confirmed: true` if review changed it.
|
|
808
|
+
Record where the approved drawing is in `mockup_at:` — the file path, or the
|
|
809
|
+
Figma or Stitch link. Only their own response counts; your summary of the
|
|
810
|
+
drawing, or no objection, does not. **A condition they attach goes into the
|
|
811
|
+
spec first**, in their words, on the lines it governs: on jig-site the owner
|
|
812
|
+
approved with "three columns at 1280 and wider, inside the page margins", the
|
|
813
|
+
condition lived only in the conversation, and `make` moved the switch to 1290.
|
|
814
|
+
- The user says to skip it → `mockup: skipped — "<their words>"`. For a change
|
|
815
|
+
small enough that drawing it costs more than building it, that is a reasonable
|
|
816
|
+
call; it is still theirs to make.
|
|
817
|
+
|
|
818
|
+
With the Stop hook, the gate reads the quotation after `approved` or `skipped` and
|
|
819
|
+
holds it to what the owner said in this session.
|
|
696
820
|
|
|
697
821
|
Then stop. The next step is `{{command_prefix}}make`.
|
|
698
822
|
|
|
@@ -713,9 +837,12 @@ each finding, run the finish again, and then `critique` runs again. See step 5 o
|
|
|
713
837
|
prevent.
|
|
714
838
|
- `confirmed: false` → the spec exists but nobody has agreed to it. Ask for
|
|
715
839
|
confirmation and stop.
|
|
716
|
-
- `mockup: pending` →
|
|
717
|
-
|
|
718
|
-
skip it
|
|
840
|
+
- `mockup: pending` → nobody has said whether to draw it. Unless the user already
|
|
841
|
+
said to skip it in asking for `make`, ask once: draw it with
|
|
842
|
+
`{{command_prefix}}mockup`, or skip it? If they skip it, write
|
|
843
|
+
`mockup: skipped — "<their words>"` in the spec and build from the spec alone.
|
|
844
|
+
Do not decide to skip it yourself, and do not finish with the spec still
|
|
845
|
+
pending: the gate holds a `make` that does.
|
|
719
846
|
|
|
720
847
|
### Build
|
|
721
848
|
|
|
@@ -820,7 +947,16 @@ and was never looked at on a phone has satisfied a third of its spec. Then run t
|
|
|
820
947
|
self-check at the end of `{{rules_path}}/00-anti-patterns.md`.
|
|
821
948
|
|
|
822
949
|
Report the `JIG_CHECK:` line, the table, and any new deviations. Then suggest
|
|
823
|
-
`{{command_prefix}}critique
|
|
950
|
+
`{{command_prefix}}critique`, now or later: the owner decides when. A page judged
|
|
951
|
+
once, as it stands, gets the verdicts it would have got straight after this build,
|
|
952
|
+
so a critique can wait for a batch of pages, or for `{{command_prefix}}ship`,
|
|
953
|
+
which will not pass until every page is judged. Where the spec says
|
|
954
|
+
`critique: at-ship`, or it is silent and `{{config_file}}` says
|
|
955
|
+
`"critique": "at-ship"`, the owner has already said to wait; do not ask. Where the
|
|
956
|
+
spec says `critique: each`, suggest it now. One
|
|
957
|
+
thing to say when it applies: if this page sets up something later pages will
|
|
958
|
+
reuse (a header, a card, a layout), a finding in it found late is fixed in every
|
|
959
|
+
page built on it, so its critique is worth running now.
|
|
824
960
|
|
|
825
961
|
## critique
|
|
826
962
|
|
|
@@ -1246,7 +1382,9 @@ because the drawing stays true, and no full critique, because nothing else moved
|
|
|
1246
1382
|
a page being made, not changed. Run `{{command_prefix}}spec`, `mockup` and
|
|
1247
1383
|
`make`.
|
|
1248
1384
|
- **No critique record for the page yet** (`.jig/critique/<surface>/`) → nothing
|
|
1249
|
-
has been judged, so nothing can be re-judged. Run `{{command_prefix}}critique
|
|
1385
|
+
has been judged, so nothing can be re-judged. Run `{{command_prefix}}critique`,
|
|
1386
|
+
unless the re-judge is deferred (step 4): then the page's first critique judges
|
|
1387
|
+
it whole.
|
|
1250
1388
|
- **The change adds, removes, reorders or regroups a region, changes the
|
|
1251
1389
|
navigation at any size, or would make the drawing wrong** → it is not a tweak.
|
|
1252
1390
|
Say so and name the route: `spec`, then `mockup`, then `make`. The gate checks
|
|
@@ -1313,12 +1451,61 @@ verdict and reason, adding `"tweak": "<at>"`. It changes nothing else. Then run
|
|
|
1313
1451
|
The gate holds both ends: it refuses a tweak that changed a verdict it did not
|
|
1314
1452
|
name, and one that named a verdict it did not re-judge.
|
|
1315
1453
|
|
|
1454
|
+
**The re-judge can wait**, when the owner says so. Write their words in
|
|
1455
|
+
tweak.json as `"deferred": "<what they said>"`, or `"deferred": true` where the
|
|
1456
|
+
page's spec says `critique: at-ship` (or, the spec silent, `{{config_file}}`
|
|
1457
|
+
does); keep `ids` named for whoever
|
|
1458
|
+
judges it, and leave the verdicts alone. The page then owes a critique, and
|
|
1459
|
+
`{{command_prefix}}ship` will not pass until one has judged it. Never defer it
|
|
1460
|
+
on your own account: the gate refuses a deferral nobody gave.
|
|
1461
|
+
|
|
1316
1462
|
### Finish
|
|
1317
1463
|
|
|
1318
1464
|
Report what changed, in the owner's words; the decision and spec lines you
|
|
1319
1465
|
touched, if any; each re-judged verdict and what it says now; and the
|
|
1320
1466
|
`JIG_CHECK` line. A re-judged verdict that is a finding goes to the owner: it is
|
|
1321
|
-
fixed by another tweak, or by `make` if it needs more.
|
|
1467
|
+
fixed by another tweak, or by `make` if it needs more. A deferred re-judge is
|
|
1468
|
+
reported as deferred, with the ids it will cover.
|
|
1469
|
+
|
|
1470
|
+
## ship
|
|
1471
|
+
|
|
1472
|
+
**Get the project ready to ship, by everything Jig checks.** `critique` can wait
|
|
1473
|
+
while pages are built and tweaked; here nothing is optional. `ship` does not
|
|
1474
|
+
deploy anything, and it is not a security review: Jig has no rules for security,
|
|
1475
|
+
performance or what a real screen reader does, and the report says so every time.
|
|
1476
|
+
|
|
1477
|
+
### 1. Build, then ask the CLI what is owed
|
|
1478
|
+
|
|
1479
|
+
Build the project the way it ships, then run `{{scripts_path}} ship`. It runs
|
|
1480
|
+
`check --all --ci` and `seo`, and reads every confirmed spec's critique: a page
|
|
1481
|
+
is owed a critique when it has none, when its page changed after it was judged,
|
|
1482
|
+
when a tweak deferred its re-judge, when its verdicts are incomplete, or when a
|
|
1483
|
+
finding stands that the owner has not ruled on. It prints each page's state and
|
|
1484
|
+
a `JIG_SHIP:` line, and exits non-zero until the project is ready. A spec that
|
|
1485
|
+
is not confirmed yet is in progress and not held against the ship.
|
|
1486
|
+
|
|
1487
|
+
### 2. Clear what it names
|
|
1488
|
+
|
|
1489
|
+
- **Mechanical or `seo` errors** → fix them as `make` would, and run `check`
|
|
1490
|
+
again.
|
|
1491
|
+
- **A page owed a critique** → run `critique` on it by its own procedure, in
|
|
1492
|
+
full: three arms, each a reader that has not seen this conversation or the
|
|
1493
|
+
build. The readers are independent here as everywhere; that you are
|
|
1494
|
+
orchestrating does not make you one of them.
|
|
1495
|
+
- **Findings** → put them to the owner. Each is fixed (by `make`, or `tweak` for
|
|
1496
|
+
a small one), or the owner rules on it in their own words and the ruling is
|
|
1497
|
+
recorded (`decide`, or `tweak`'s decision step), after which the verdict is
|
|
1498
|
+
`ruled`. Your view that a finding is minor is not a ruling.
|
|
1499
|
+
|
|
1500
|
+
Then build again and run `{{scripts_path}} ship` again. Repeat until it says
|
|
1501
|
+
`ready=yes`.
|
|
1502
|
+
|
|
1503
|
+
### Finish
|
|
1504
|
+
|
|
1505
|
+
Report the `JIG_SHIP:` line as printed, each page's state, what was fixed and
|
|
1506
|
+
what the owner ruled, and the line the CLI ends with naming what Jig does not
|
|
1507
|
+
check. With the Stop hook, a `ship` session is held while `jig ship` fails,
|
|
1508
|
+
unless you stop to ask the owner something.
|
|
1322
1509
|
|
|
1323
1510
|
## probe
|
|
1324
1511
|
|
|
@@ -1362,6 +1549,13 @@ When a `critique` or `tweak` session stops, the gate records its verdicts in
|
|
|
1362
1549
|
if your verdicts are committed it stops you once more to commit the lock on its
|
|
1363
1550
|
own; the next stop passes.
|
|
1364
1551
|
|
|
1552
|
+
**The lock is the gate's to write, never yours.** When the gate is wrong (it
|
|
1553
|
+
misreads the session, or asks for something the procedure does not), say what it
|
|
1554
|
+
got wrong, leave the lock as it is, and report the work as held by the gate. On
|
|
1555
|
+
jig-site the gate misread a tweak as no command at all, and the session computed
|
|
1556
|
+
the lock by hand and committed it. The lock was right that time, and a lock an
|
|
1557
|
+
agent can write is still a record of nothing.
|
|
1558
|
+
|
|
1365
1559
|
It judges the critiques this session touched: any with a file changed since the
|
|
1366
1560
|
session began, and the current spec's surface when you ran `critique`. Another
|
|
1367
1561
|
page's older critique does not hold you back. To set a critique aside for good,
|
package/templates/SKILL.md.tmpl
CHANGED
|
@@ -31,6 +31,11 @@ cite the number when you follow or deliberately break one.
|
|
|
31
31
|
so ask for the step you need rather than doing it from this summary. Never design the whole product up front. Critique findings go back to
|
|
32
32
|
`make`, then `critique` again, until clean or accepted by the user — then the
|
|
33
33
|
next feature.
|
|
34
|
+
**Asked to check or confirm a spec, or a mockup, for the owner?** Work from
|
|
35
|
+
the sheet the command shows with it: `{{command_prefix}}spec`'s from
|
|
36
|
+
`.jig/specs/<name>.checked.json` (its step 4), `{{command_prefix}}mockup`'s
|
|
37
|
+
size by size against the spec (its step 3, rendering every frame). Confirm
|
|
38
|
+
only what you checked yourself, and name to the owner what you could not.
|
|
34
39
|
**Building a screen rather than a single component?** Read `L-01 · Layout
|
|
35
40
|
method` in `{{rules_path}}/03-patterns.md` and run its five steps before
|
|
36
41
|
writing any markup. It is a procedure, not a component, so step 4 never
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
"argumentHint": "[--json]",
|
|
30
30
|
"status": "available"
|
|
31
31
|
},
|
|
32
|
+
"ship": {
|
|
33
|
+
"description": "Say whether the project is ready to ship, by everything Jig checks: no mechanical or seo errors, and every confirmed page critiqued as it stands, with nothing the owner has not ruled on. The slash command critiques what is owed first. Security, performance and deployment are not Jig's to check.",
|
|
34
|
+
"argumentHint": "",
|
|
35
|
+
"status": "available"
|
|
36
|
+
},
|
|
32
37
|
"verdicts": {
|
|
33
38
|
"description": "Verify a critique's verdict files: every rule in each pass judged once, no id that does not exist, no rule in the wrong arm, rendered only with a screenshot. Computes the counts the critique reports, so the agent never writes them.",
|
|
34
39
|
"argumentHint": "<surface>",
|