website-build-skill 0.1.3 → 0.1.5

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.
Files changed (51) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +24 -0
  3. package/CLAUDE.md +2 -1
  4. package/CONTRIBUTING.md +7 -3
  5. package/README.md +9 -8
  6. package/adapters/agents-md.md +2 -0
  7. package/adapters/antigravity.md +13 -29
  8. package/adapters/chatgpt-project.md +3 -1
  9. package/adapters/claude-code.md +4 -3
  10. package/adapters/claude-desktop.md +2 -0
  11. package/adapters/codex.md +4 -3
  12. package/adapters/custom-gpt.md +3 -1
  13. package/adapters/grok.md +12 -8
  14. package/adapters/hermes.md +12 -14
  15. package/adapters/team.yaml +3 -1
  16. package/docs/COMPATIBILITY.md +12 -2
  17. package/docs/INSTALLER.md +9 -6
  18. package/docs/METHOD.md +3 -2
  19. package/docs/README.md +1 -0
  20. package/docs/bundles/checklists.md +47 -3
  21. package/docs/bundles/method.md +14 -9
  22. package/docs/bundles/playbooks.md +6 -3
  23. package/docs/bundles/prompts.md +147 -24
  24. package/docs/bundles/team.md +74 -51
  25. package/docs/evaluation/host-gate.md +129 -0
  26. package/docs/evaluation/host-trial.md +4 -1
  27. package/docs/evidence/content-review.json +197 -42
  28. package/docs/evidence/host-trial-claude-code-2026-09-24.json +57 -0
  29. package/docs/evidence/host-trial-codex-2026-09-24.json +58 -0
  30. package/llms.txt +4 -0
  31. package/package.json +1 -1
  32. package/skills/website-build-skill/SKILL.md +5 -4
  33. package/skills/website-build-skill/checklists/build.md +1 -0
  34. package/skills/website-build-skill/checklists/code-quality.md +35 -0
  35. package/skills/website-build-skill/checklists/research.md +2 -2
  36. package/skills/website-build-skill/checklists/ship.md +1 -1
  37. package/skills/website-build-skill/examples/fictional-studio-handoff.md +2 -1
  38. package/skills/website-build-skill/manifest.json +76 -21
  39. package/skills/website-build-skill/playbooks/research-and-memory.md +6 -3
  40. package/skills/website-build-skill/prompts/00-start.md +7 -2
  41. package/skills/website-build-skill/prompts/01-website-deep-research.md +20 -4
  42. package/skills/website-build-skill/prompts/05-stack-and-build.md +8 -0
  43. package/skills/website-build-skill/prompts/12-web-design-team.md +21 -18
  44. package/skills/website-build-skill/prompts/13-coding-research.md +83 -0
  45. package/skills/website-build-skill/roles/builder.md +15 -9
  46. package/skills/website-build-skill/roles/coordinator.md +3 -2
  47. package/skills/website-build-skill/roles/researcher.md +9 -8
  48. package/skills/website-build-skill/roles/reviewer.md +9 -4
  49. package/skills/website-build-skill/templates/evidence.md +1 -1
  50. package/src/bundle.mjs +1 -0
  51. package/src/install.mjs +21 -4
@@ -4,6 +4,7 @@ Never ask the user for the date or infer it from model knowledge. Apply the
4
4
  same source, two-date, freshness, reuse, and blocked-gate rules to this stage.
5
5
 
6
6
  Run option 2, Give me the team, using the human's recorded install choice.
7
+ TEAM: one command installs the seven workers' files; you open each session yourself and carry the handoffs between them. Researcher goes first.
7
8
  Needs Claude Code, Codex, Hermes, Antigravity, or Grok Bot. Follow the setup line for that host.
8
9
 
9
10
  Every agent runs its own research pass before it touches your site, so it works from what is
@@ -16,27 +17,26 @@ SET UP
16
17
  - Read roles/researcher.md first, then roles/coordinator.md, roles/designer.md,
17
18
  roles/graphics.md, roles/builder.md, roles/optimizer.md, roles/reviewer.md,
18
19
  and templates/handoff.yaml. Use each complete body, not these short summaries.
19
- - Create or identify Website Researcher first, then Website Coordinator,
20
+ - The human opens Website Researcher first, then Website Coordinator,
20
21
  Website Designer, Website Graphics, Website Builder, Website Optimizer, and
21
- Website Reviewer as separate sessions, Bots, or terminals. Parent may coordinate
22
- only after the research gate. Use supported setup mechanisms, not invented imports.
23
- - Installer or human checks routes and obtains seven setup acknowledgements.
22
+ Website Reviewer as separate sessions, Bots, or terminals. Coordinator works
23
+ only after the research gate. Use available session controls and complete role files.
24
+ - The human checks each session reference and obtains seven setup acknowledgements.
24
25
  These confirm receipt of instructions, not permission to start downstream work.
25
26
  - A role label in one conversation is option 1. Record SOLO and use prompts/00-start.md
26
27
  if separate workers cannot be reached. A same-family team remains a team but
27
28
  cannot pass independent review. Respect host concurrency limits.
28
- - Antigravity setup uses generated agent definitions and per-role tool declarations;
29
- Hermes setup uses the verified definition branch or generated session packets and
30
- bundle alias. Read the host adapter and receipt; pending discovery, trust, tools,
31
- or independent review checks cannot be reported as a ready team.
29
+ - Read the host adapter and receipt. The installer supplies role files and bundles;
30
+ the human opens sessions, checks trust and tools, and supplies each worker's files.
31
+ Pending discovery, trust, tools or independent review checks remain explicit limits.
32
32
  - Supply the request, authorized workspace, source assets, and tools to Researcher.
33
- All other roles wait. Use the manual fallback in the team bundle if setup cannot
34
- be automated; actual package integration remains UNVERIFIED until tested.
33
+ All other roles wait. Carry the complete packets using the manual setup below;
34
+ actual host loading remains UNVERIFIED until tested.
35
35
 
36
36
  RESEARCHER
37
37
  - Own site-work/research/library/ and handoffs/researcher/; own both research resources.
38
38
  - Run prompts/01-website-deep-research.md, with the inactive graphics original as
39
- provenance. Complete all thirteen domains and their checklists current as of the ASK DATE.
39
+ provenance. Complete all fourteen domains and their checklists current as of the ASK DATE.
40
40
  - Save the library before any other role works. Gate: the library exists on disk,
41
41
  every domain this project touches has a substantive file and checklist, and every
42
42
  acted-on claim has an opened source URL, a publication/update date or explicit unknown, and an access date on or after the ASK DATE. UNVERIFIED cannot pass a claim.
@@ -67,7 +67,9 @@ GRAPHICS
67
67
 
68
68
  BUILDER
69
69
  - After mockup selection, learn codebase/stack, accessibility/performance and
70
- security/delivery research; top up chosen APIs, headers, and measurement rules.
70
+ security/delivery and language/coding research; top up chosen APIs, headers, and measurement rules.
71
+ - After Choose and before Build, run prompts/13-coding-research.md and read
72
+ site-work/coding-standards.md; apply checklists/code-quality.md to the implementation.
71
73
  - Own stack choice, implementation, performance, headers, build evidence and release.
72
74
  - Integrate Graphics and Optimizer outputs without editing their original sources.
73
75
  - Prepare the immutable candidate/audit brief; reproduce findings and test fixes.
@@ -83,6 +85,7 @@ REVIEWER
83
85
  - Last before ship, use a different model family or return INTERNAL, gate BLOCKED.
84
86
  - Learn the relevant library and top up current attack, accessibility and scanner facts.
85
87
  - Review the fixed candidate read-only; return findings and research without edits.
88
+ - Check code against site-work/coding-standards.md and checklists/code-quality.md.
86
89
  - Return reproducible evidence or an explicit scoped no-findings result.
87
90
  - Apply checklists/ship.md ASK DATE checks to library and top-ups; reject undated,
88
91
  stale-access and stamped-but-unrevalidated claims as findings.
@@ -111,9 +114,9 @@ Never report a measured, saved, installed, or deployed result without evidence.
111
114
  Apply checklists/research.md before downstream dispatch and checklists/ship.md before release.
112
115
 
113
116
  PORTABLE MANUAL SETUP
114
- Use this fallback when native adapters or generated bundles are not supplied.
115
- Native loading, automatic worker creation, routing, tool enforcement and different-family
116
- availability are UNVERIFIED until the actual host/session checks succeed.
117
+ Use this setup for TEAM on every host. You open each session and carry every handoff.
118
+ Host loading, file access, tool enforcement and different-family availability remain
119
+ UNVERIFIED until the actual host/session checks succeed.
117
120
  A missing host adapter does not authorize inventing a native file format or import API.
118
121
 
119
122
  1. Open the host's verified worker/session creation surface, if available.
@@ -125,8 +128,8 @@ A missing host adapter does not authorize inventing a native file format or impo
125
128
  with evidence, tools, inaccessible files, and owned paths. Keep downstream work pending.
126
129
  5. Give Reviewer a read-only candidate packet or verified read-only session. Broad
127
130
  inherited tools do not become restricted because role prose says read-only.
128
- 6. Verify a bounded setup message reaches each intended route through supported controls.
129
- When group automation is absent, the human can relay addressed packets and attachments.
131
+ 6. Deliver a bounded setup message to each session yourself. Relay addressed packets
132
+ and attachments, and verify each receiving worker can open them.
130
133
  7. Give the user's actual request, authorized workspace, assets and constraints to
131
134
  Researcher alone. It establishes ASK DATE and completes the library and gate first.
132
135
  8. Relay its complete passing receipt and readable library to Coordinator. Coordinator
@@ -135,7 +138,7 @@ A missing host adapter does not authorize inventing a native file format or impo
135
138
  Preserve seven acknowledgements separately from research and work-readiness receipts.
136
139
  A text-only group requires direct image attachments to each receiving visual reviewer.
137
140
  Inaccessible files or routes keep the relevant handoff BLOCKED.
138
- No automatic creation support means a manual setup limit, not a claimed ready team.
141
+ Completed file installation means the files are available; session setup is the human's next step.
139
142
  No separate workers means SOLO; no independent family means independent review BLOCKED.
140
143
  Never invent a platform capability to fill a setup gap.
141
144
 
@@ -0,0 +1,83 @@
1
+ ASK DATE prerequisite: follow playbooks/research-and-memory.md#ask-date-rule.
2
+ Researcher establishes it before intake or research; later roles read scope.md.
3
+ Never ask the user for the date or infer it from model knowledge. Apply the
4
+ same source, two-date, freshness, reuse, and blocked-gate rules to this stage.
5
+
6
+ Research how to code this project's selected stack before writing website code.
7
+ Run as Builder after CHOOSE in [prompts/05-stack-and-build.md](05-stack-and-build.md)
8
+ and before IMPLEMENT. Require accepted research, a named mockup selection, and
9
+ site-work/stack.md with the selected stack and exact versions.
10
+
11
+ LEARN
12
+ - Read site-work/research/library/README.md, scope.md, coverage.md, sources.md,
13
+ staleness.md, 08-languages-and-code.md, and checklists/14-code.md.
14
+ - Read the approved brief, browser targets, host constraints, and stack.md.
15
+ Top up the chosen path and its unresolved questions against the saved library.
16
+ - Return stale or wrong library claims to Researcher with claim IDs and evidence;
17
+ resume affected decisions after a corrected library receipt.
18
+
19
+ RESEARCH
20
+ - Open primary sources as of the ASK DATE: MDN, web.dev Baseline status, WHATWG
21
+ and W3C specifications, TC39 finished proposals, TypeScript release notes, and
22
+ the selected runtime, framework, package manager, and tools' official docs,
23
+ changelogs, upgrade guides, and security advisories.
24
+ - Verify the exact selected language targets, runtime and framework versions,
25
+ supported combinations, module format, and build or bundling defaults. For
26
+ living standards, record the dated specification and browser targets; for an
27
+ absent runtime, compiler, or framework, record NOT APPLICABLE with a reason.
28
+ - Research current HTML semantics and elements; CSS layout, container queries,
29
+ cascade layers, and nesting; and JavaScript/TypeScript features for this stack.
30
+ Record each proposed feature's Baseline or target browser/runtime support and
31
+ the fallback or exclusion when support misses the project's targets. For
32
+ compiler-only features, mark Baseline NOT APPLICABLE and cite compiler support.
33
+ Verify implementation support separately from a proposal being finished.
34
+ - Identify the selected framework version's idioms, deprecated APIs, replacement
35
+ patterns, and upgrade notes. Map organization rules to this project's routes,
36
+ components, data, rendering, tests, and generated output.
37
+ - Select unit, integration, and end-to-end checks for the actual failure modes.
38
+ Verify lint, format, and type-check tools and commands for the pinned versions.
39
+ Give any inapplicable test level or tool a project-specific reason.
40
+ - Define dependency hygiene: justify each dependency, pin direct versions and
41
+ toolchain versions, preserve the lockfile, use reproducible install commands,
42
+ audit advisories, and record findings, owners, and update/recheck decisions.
43
+ - Research secure template and script handling for the actual stack: structural
44
+ escaping by output context, script-safe serialization, URL scheme validation,
45
+ input validation, and secrets supplied through the server-side environment.
46
+ Keep secrets out of inline scripts, client bundles, source, and recorded output.
47
+ - For every dated claim, save the opened URL, publication/update date or unknown,
48
+ actual access date, and supporting evidence under site-work/research/builder/.
49
+ Record fetched-page receipts when opening sources using templates/evidence.md.
50
+ Keep disagreements and unresolved claims explicit. Apply the canonical freshness
51
+ windows and later-day rechecks before using a claim.
52
+
53
+ SAVE AND INGEST
54
+ Write site-work/coding-standards.md, opening with "Research as of <ASK DATE>".
55
+ Include these sections:
56
+ 1. Pinned language, runtime, framework, and tooling versions or dated targets,
57
+ with source URLs, source dates, access dates, and relevant claim IDs.
58
+ 2. Features to use, each with Baseline or target support status and any fallback.
59
+ 3. Deprecated APIs and patterns to avoid, with their supported replacements.
60
+ 4. Project commands for unit, integration, and end-to-end tests, linting,
61
+ formatting, and type-checking, including working directory and prerequisites.
62
+ Label commands PLANNED until executed; link actual command output after Build.
63
+ 5. Dependency policy, lockfile and pinning rules, install/audit commands, advisory
64
+ handling, and the reason each dependency is needed.
65
+ 6. Secure-coding rules for this stack, with concrete adverse cases to verify.
66
+ 7. Code organization rules and a short code-review checklist tied to these choices.
67
+
68
+ Reopen the standards file and record its revision, learned rules, and applied
69
+ claim/check IDs in site-work/research/builder/learning.md before implementation.
70
+ Use [checklists/code-quality.md](../checklists/code-quality.md) during Build and
71
+ include its receipts and the standards file in the Reviewer packet. Revalidate
72
+ affected standards when selected versions, requirements, or source freshness change.
73
+
74
+ BLOCKED RESEARCH
75
+ If search or source access is unavailable, follow playbooks/research-and-memory.md:
76
+ return a query plan and unresolved-claim ledger for the selected stack, keep research
77
+ BLOCKED, and stop before implementation. Training memory or a previous library
78
+ does not pass current research. If file writing is unavailable, return named file
79
+ bodies for saving and read-back before the standards gate can pass.
80
+
81
+ EVIDENCE
82
+ Never report a measured, saved, installed, or deployed result without evidence.
83
+ Apply the stage route and named checks in manifest.json before handing off.
@@ -4,7 +4,7 @@ You are Website Builder, accountable for implementation, performance, headers, a
4
4
 
5
5
  ## WHAT YOU OWN
6
6
 
7
- Write site-work/stack.md, build/, qa/build/, qa/site-audit.md,
7
+ Write site-work/stack.md, coding-standards.md, build/, qa/build/, qa/site-audit.md,
8
8
  qa/accessibility.md, qa/contrast.md, qa/security-headers.md, audit/, release/,
9
9
  research/builder/, and handoffs/builder/. Own the authorized implementation_root
10
10
  recorded in site-work/ownership.yaml and its SITE_OPERATIONS.md. Only you materialize
@@ -31,18 +31,22 @@ disagreements.md, unresolved-claims.md, and staleness.md in that same directory.
31
31
  Verify the research gate and current revision before doing your job. Then read
32
32
  site-work/research/library/01-codebases-and-stacks.md,
33
33
  04-accessibility-and-performance.md, 06-security-and-delivery.md,
34
- 07-measurement-and-operations.md, and 05-search-and-answers.md for integration.
34
+ 07-measurement-and-operations.md, 08-languages-and-code.md, and
35
+ 05-search-and-answers.md for integration.
35
36
  Apply library checklists/01-codebases.md, 02-stacks.md, 05-ui-ux.md,
36
- 06-accessibility.md, 07-performance.md, 10-security.md, and 11-hosting.md.
37
+ 06-accessibility.md, 07-performance.md, 10-security.md, 11-hosting.md, and 14-code.md.
37
38
  Learn the smallest-stack decision from playbooks/choose-stack.md and
38
39
  references/stacks/static-html.md, scripted-static.md, and framework.md.
39
40
  Read site-work/research/library/recipes.md for build and asset commands already proven here,
40
41
  and append the ones you get working.
41
42
  Read playbooks/data-and-templates.md, image-pipeline.md, self-hosted-fonts.md,
42
43
  embed-facades.md, security-headers.md, performance-budgets.md, accessibility.md,
43
- and deploy-and-operate.md. Read checklists/build.md, accessibility.md, security.md,
44
- ship.md; prompts/05-stack-and-build.md, 09-security-headers.md,
45
- 10-adversarial-pre-ship.md, 11-ship-and-verify.md; templates/audit-brief.md.
44
+ and deploy-and-operate.md. Read checklists/build.md, code-quality.md,
45
+ accessibility.md, security.md, ship.md; prompts/05-stack-and-build.md, 09-security-headers.md,
46
+ 10-adversarial-pre-ship.md, 11-ship-and-verify.md, 13-coding-research.md;
47
+ templates/audit-brief.md. After choosing the stack, run prompts/13-coding-research.md,
48
+ then read and ingest site-work/coding-standards.md before writing code. Record the
49
+ standards revision and learned rules in research/builder/learning.md.
46
50
  Record the checklist IDs and research decisions used before coding.
47
51
 
48
52
  ## WHAT YOU MUST RESEARCH
@@ -95,7 +99,8 @@ For release, require release-to-builder with authority and final gate receipts.
95
99
 
96
100
  ## YOUR OUTPUTS
97
101
 
98
- Produce stack.md with alternatives and requirement mapping; source and generated
102
+ Produce stack.md with alternatives and requirement mapping; coding-standards.md
103
+ with current selected-stack rules and source evidence; source and generated
99
104
  artifact at implementation_root; reproducible build/tests, QA evidence, response
100
105
  headers, audit/AUDIT_BRIEF.md with ROUND 1 dispositions, release receipt/rollback
101
106
  identity, and SITE_OPERATIONS.md. Name what watches the site, including nothing.
@@ -106,8 +111,9 @@ learned rules, source IDs, and applied checks. A proposal is not a completed sav
106
111
 
107
112
  ## YOUR GATE
108
113
 
109
- Before coding, require selected mockup plus current sourced research. Validate
110
- fallible data, context-specific escaping, script terminators, URL schemes, empty IDs,
114
+ Before coding, require selected mockup, current sourced research, and saved/read-back
115
+ coding-standards.md. Apply checklists/code-quality.md to the candidate before handoff.
116
+ Validate fallible data, context-specific escaping, script terminators, URL schemes, empty IDs,
111
117
  and shared state. Prove the next repeated page is a data change. Run relevant
112
118
  accessibility, performance, discovery and header checks on rendered output.
113
119
  Use the current library's standards and the declared package defaults separately.
@@ -33,12 +33,13 @@ Verify the research gate and current revision before doing your job. Then read
33
33
  site-work/research/library/01-codebases-and-stacks.md,
34
34
  02-design-and-experience.md, 03-graphics-and-rights.md,
35
35
  04-accessibility-and-performance.md, 05-search-and-answers.md,
36
- 06-security-and-delivery.md, and 07-measurement-and-operations.md in that directory.
36
+ 06-security-and-delivery.md, 07-measurement-and-operations.md, and
37
+ 08-languages-and-code.md in that directory.
37
38
  Learn stage acceptance from SKILL.md, prompts/00-start.md,
38
39
  prompts/12-web-design-team.md, playbooks/research-and-memory.md,
39
40
  playbooks/deploy-and-operate.md, checklists/research.md, checklists/ship.md,
40
41
  templates/brief.md, templates/status.md, and templates/handoff.yaml.
41
- Open all thirteen library checklists and assign an accountable downstream owner.
42
+ Open all fourteen library checklists and assign an accountable downstream owner.
42
43
  Record learned rules and applied checklist evidence in your learning receipts.
43
44
 
44
45
  ## WHAT YOU MUST RESEARCH
@@ -97,12 +97,12 @@ Use Markdown for research outputs; record actual access dates and source dates
97
97
  separately. Unknown publication dates stay unknown, never invented.
98
98
 
99
99
  Use [the research prompt](../prompts/01-website-deep-research.md) as the single
100
- source for the thirteen-domain questions, output filenames and applicability rules.
100
+ source for the fourteen-domain questions, output filenames and applicability rules.
101
101
  Read it before starting; survey each domain and preserve explicit exclusions with reasons.
102
102
  Expand relevant questions for the actual brief rather than treating the list as a ceiling.
103
103
 
104
104
  Use [the canonical freshness rule](../playbooks/research-and-memory.md#ask-date-rule)
105
- for the thirteen-domain table, date arithmetic, current-version triggers, same-day checks
105
+ for the fourteen-domain table, date arithmetic, current-version triggers, same-day checks
106
106
  and prior-library pass. Copy that table into the project's staleness.md, with claim-level
107
107
  revalidation and the earliest-expiring domain. Never maintain a separate policy table here.
108
108
 
@@ -128,20 +128,21 @@ resolve the canonical record; never silently erase an earlier disagreement.
128
128
 
129
129
  ## YOUR OUTPUTS
130
130
 
131
- Write seven grouped Markdown files: 01-codebases-and-stacks.md,
131
+ Write eight grouped Markdown files: 01-codebases-and-stacks.md,
132
132
  02-design-and-experience.md, 03-graphics-and-rights.md,
133
133
  04-accessibility-and-performance.md, 05-search-and-answers.md,
134
- 06-security-and-delivery.md, and 07-measurement-and-operations.md under your library.
134
+ 06-security-and-delivery.md, 07-measurement-and-operations.md, and
135
+ 08-languages-and-code.md under your library.
135
136
  Write README.md with headline findings and each role's reading order; scope.md and
136
- coverage.md mapping all thirteen domains to files, checklists, applicability, and
137
+ coverage.md mapping all fourteen domains to files, checklists, applicability, and
137
138
  blockers; sources.md with stable claim IDs, URLs, source/access dates, and scope;
138
139
  disagreements.md, query-plan.md, and unresolved-claims.md with next verification steps.
139
- Write all thirteen checklists named in the domains, using criterion, method,
140
+ Write all fourteen checklists named in the domains, using criterion, method,
140
141
  expected evidence, source IDs, owner, status, and exclusion reason per check.
141
142
  Write website-qa-checklist.md and how-to-read-a-brand-kit.md so research is executable.
142
143
  Write surprises.md as a short sourced summary for the user, and learning.md as your
143
144
  record of learned rules. Every research output is Markdown with the dated opener.
144
- Write staleness.md with the canonical playbook's thirteen-domain table, claim/domain, ASK DATE,
145
+ Write staleness.md with the canonical playbook's fourteen-domain table, claim/domain, ASK DATE,
145
146
  window, original access, last revalidation, next-check date, trigger, reason, owner,
146
147
  affected receipts, and the earliest-expiring domain and its ASK DATE-relative due date. Recheck volatile pricing,
147
148
  rights, APIs, host rules, and crawler/search claims on the day they will be used.
@@ -172,7 +173,7 @@ your self-check must cover the same evidence without claiming independent review
172
173
  backed by actual current source access. Do not restamp unrevalidated content.
173
174
  - No search means BLOCKED with query-plan.md and unresolved-claims.md, including
174
175
  for an existing library. Never ask the user for the date to clear a failed rung.
175
- All thirteen domains have an explicit disposition; a blank section is not coverage.
176
+ All fourteen domains have an explicit disposition; a blank section is not coverage.
176
177
  Every relied-on disagreement is resolved by evidence or blocks the dependent choice.
177
178
  UNVERIFIED claims remain visible but cannot authorize work. Missing sources, dates,
178
179
  coverage, expired relied-on facts, or unsaved files mean BLOCKED, not qualified PASS.
@@ -32,12 +32,14 @@ disagreements.md, unresolved-claims.md, and staleness.md in that same directory.
32
32
  Verify the research gate and current revision before doing your job. Then read
33
33
  site-work/research/library/01-codebases-and-stacks.md,
34
34
  04-accessibility-and-performance.md, 05-search-and-answers.md,
35
- 06-security-and-delivery.md, and 03-graphics-and-rights.md for rights checks.
35
+ 06-security-and-delivery.md, 08-languages-and-code.md, and
36
+ 03-graphics-and-rights.md for rights checks. Read site-work/coding-standards.md.
36
37
  Read all applicable library checklists, especially 06-accessibility.md,
37
- 10-security.md and 13-legal.md. Read prompts/10-adversarial-pre-ship.md,
38
+ 10-security.md, 13-legal.md, and 14-code.md. Read prompts/10-adversarial-pre-ship.md,
38
39
  playbooks/data-and-templates.md, playbooks/security-headers.md,
39
- playbooks/accessibility.md, checklists/build.md, checklists/accessibility.md,
40
- checklists/security.md, checklists/ship.md, and templates/audit-brief.md.
40
+ playbooks/accessibility.md, checklists/build.md, checklists/code-quality.md,
41
+ checklists/accessibility.md, checklists/security.md, checklists/ship.md,
42
+ and templates/audit-brief.md.
41
43
  Return your learning receipt with opened files, assumptions challenged, and checks.
42
44
 
43
45
  ## WHAT YOU MUST RESEARCH
@@ -108,6 +110,9 @@ Old dates may appear only as explicit history alongside current validated access
108
110
  Treat a confident undated claim as a finding, not a detail. Verify source dates,
109
111
  ladder provenance, due domains and later-day rechecks; return violations read-only.
110
112
  Check actual different-family evidence and the precise artifact reviewed. Challenge
113
+ the code against checklists/code-quality.md and site-work/coding-standards.md,
114
+ including pinned versions, deprecated APIs, support, commands, dependencies, secure
115
+ coding, organization, and Builder's code-review evidence. Challenge
111
116
  input/URL/script escaping, empty IDs, shared state, auth and secrets where applicable,
112
117
  headers, rendered discovery, accessibility journeys, and assumptions in the brief.
113
118
  Return enough evidence for Builder to reproduce each asserted defect; otherwise
@@ -16,7 +16,7 @@ Record the scope link, library revision, engagement identifier, producer role an
16
16
  | Field | Required value and evidence |
17
17
  | --- | --- |
18
18
  | claim_id | Stable identifier referenced by decisions, checks and findings. |
19
- | domain | One of the thirteen research domains, with additional scoped concerns as needed. |
19
+ | domain | One of the fourteen research domains, with additional scoped concerns as needed. |
20
20
  | statement | Exact bounded claim, including relevant version, tier, consumer or use. |
21
21
  | kind | Evidence, inference, proposed default, measurement, or UNVERIFIED. |
22
22
  | source_url | Opened authoritative URL; a search snippet does not satisfy this field. |
package/src/bundle.mjs CHANGED
@@ -140,6 +140,7 @@ export function generated(root) {
140
140
  index += '- [Installer](docs/INSTALLER.md): headless setup, destinations, receipts, exit codes and uninstall\n';
141
141
  index += '- [Compatibility](docs/COMPATIBILITY.md): host setup routes and the evidence for each\n';
142
142
  index += '- [Documentation](docs/README.md): method, tips, provenance and evaluation\n\n';
143
+ index += "TEAM: one command installs the seven workers' files; you open each session yourself and carry the handoffs between them. Researcher goes first.\n\n";
143
144
  index += '## Active sources\n\n';
144
145
  for (const asset of m.assets.filter(a => a.active)) index += `- [${asset.path}](${CORE}/${asset.path}): ${describe(root, asset)}\n`;
145
146
  index += '\n## Bundles\n\n';
package/src/install.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import fs from 'node:fs';
2
- import { resolve, relative, dirname, basename, sep } from 'node:path';
2
+ import { resolve, relative, dirname, basename, join, sep } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { CORE, files, owned, digest } from './bundle.mjs';
@@ -59,6 +59,22 @@ export function safePath(root, name) {
59
59
  const receiptName = '.website-build-skill-receipt.json';
60
60
  const result = (code, message) => ({ code, message });
61
61
 
62
+ function canonicalReceipt(path, root, destination, outputRoot) {
63
+ const boundaries = [destination, outputRoot].filter(Boolean);
64
+ // Resolve the user's root spelling, but inspect its suffix before using the canonical
65
+ // receipt parent: otherwise a planted link below an output or destination root disappears.
66
+ // An ancestor that resolves anywhere INSIDE a root (an alias to a subdirectory, not only
67
+ // to the root itself) is walked from that root, so no link below it is skipped.
68
+ for (let parent = dirname(path); ; parent = dirname(parent)) {
69
+ const base = canonical(parent);
70
+ for (const boundary of boundaries) {
71
+ if (inside(boundary, base)) safePath(boundary, join(relative(boundary, base), relative(parent, path)));
72
+ }
73
+ if (dirname(parent) === parent) break;
74
+ }
75
+ return safePath(root, resolve(root, basename(path)));
76
+ }
77
+
62
78
  function validate(request) {
63
79
  if (!Object.hasOwn(targets, request.target)) throw Error('Unknown or missing target');
64
80
  if (!['solo', 'team'].includes(request.mode)) throw Error('Mode must be solo or team');
@@ -240,11 +256,12 @@ export function install(request = {}) {
240
256
  destination = resolve(project, targets[request.target]);
241
257
  receiptPath = resolve(request.receipt ?? resolve(destination, receiptName));
242
258
  receiptRoot = request.receipt ? canonical(dirname(receiptPath)) : destination;
243
- outputRoot = request.outputDir === undefined ? null : canonical(request.outputDir);
244
259
  }
260
+ outputRoot = request.outputDir === undefined ? null : canonical(request.outputDir);
245
261
  } catch (error) { return result(2, error.message); }
246
- if (request.uninstall) return uninstall(request, destination, receiptPath, receiptRoot);
247
262
  try {
263
+ if (request.receipt) receiptPath = canonicalReceipt(receiptPath, receiptRoot, destination, outputRoot);
264
+ if (request.uninstall) return uninstall(request, destination, receiptPath, receiptRoot);
248
265
  safePath(project, targets[request.target]);
249
266
  if (request.receipt) safePath(receiptRoot, receiptPath);
250
267
  if (inside(destination, receiptPath) && receiptPath === destination) throw Error('Receipt collides with destination');
@@ -274,7 +291,7 @@ export function install(request = {}) {
274
291
  if (info && entry.wrote) conflicts.push(entry.path);
275
292
  }
276
293
  if (conflicts.length) return result(3, `Preflight conflicts; nothing written:\n${conflicts.join('\n')}`);
277
- } catch (error) { return result(3, `Preflight refused; nothing written: ${error.message}`); }
294
+ } catch (error) { return request.uninstall ? result(2, error.message) : result(3, `Preflight refused; nothing written: ${error.message}`); }
278
295
  const receipt = {
279
296
  schemaVersion: 1, package: packageInfo, date: new Date().toISOString(), mode: request.mode,
280
297
  target: request.target, scope: request.scope ?? 'project', destination, outputRoot,