website-build-skill 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +12 -0
- package/.claude-plugin/plugin.json +10 -0
- package/AGENTS.md +19 -0
- package/CHANGELOG.md +42 -0
- package/CLAUDE.md +16 -0
- package/CODE_OF_CONDUCT.md +127 -0
- package/CONTRIBUTING.md +49 -0
- package/LICENSE +21 -0
- package/MAINTAINERS.md +12 -0
- package/README.md +148 -0
- package/RELEASING.md +133 -0
- package/REPO_SETTINGS.md +91 -0
- package/SECURITY.md +28 -0
- package/adapters/agents-md.md +26 -0
- package/adapters/antigravity.md +68 -0
- package/adapters/chatgpt-project.md +57 -0
- package/adapters/claude-code.md +25 -0
- package/adapters/claude-desktop.md +33 -0
- package/adapters/codex.md +21 -0
- package/adapters/custom-gpt.md +57 -0
- package/adapters/grok.md +100 -0
- package/adapters/hermes.md +49 -0
- package/adapters/team.yaml +42 -0
- package/adapters/zero-install.md +17 -0
- package/bin/website-build-skill.mjs +6 -0
- package/docs/COMPATIBILITY.md +34 -0
- package/docs/EVALUATION.md +109 -0
- package/docs/INSTALLER.md +73 -0
- package/docs/LIBRARY-CHECK.md +95 -0
- package/docs/METHOD.md +32 -0
- package/docs/PROVENANCE.md +36 -0
- package/docs/TIPS.md +18 -0
- package/docs/bundles/checklists.md +414 -0
- package/docs/bundles/method.md +1398 -0
- package/docs/bundles/playbooks.md +1566 -0
- package/docs/bundles/prompts.md +987 -0
- package/docs/bundles/team.md +1781 -0
- package/docs/evaluation/host-trial.md +95 -0
- package/docs/evaluation/receipt-template.json +18 -0
- package/docs/evidence/audit-baseline.json +61 -0
- package/docs/evidence/content-review.json +141 -0
- package/docs/evidence/floor.json +345 -0
- package/docs/evidence/library-check.json +164 -0
- package/docs/evidence/local-checks.json +156 -0
- package/llms.txt +74 -0
- package/package.json +68 -0
- package/skills/website-build-skill/SKILL.md +124 -0
- package/skills/website-build-skill/archive/graphics-design-original.md +70 -0
- package/skills/website-build-skill/checklists/accessibility.md +38 -0
- package/skills/website-build-skill/checklists/brand-and-mockups.md +43 -0
- package/skills/website-build-skill/checklists/build.md +39 -0
- package/skills/website-build-skill/checklists/performance-seo.md +40 -0
- package/skills/website-build-skill/checklists/research.md +91 -0
- package/skills/website-build-skill/checklists/security.md +38 -0
- package/skills/website-build-skill/checklists/ship.md +59 -0
- package/skills/website-build-skill/examples/audit-cases.md +66 -0
- package/skills/website-build-skill/examples/fictional-studio-brief.md +73 -0
- package/skills/website-build-skill/examples/fictional-studio-handoff.md +98 -0
- package/skills/website-build-skill/manifest.json +1474 -0
- package/skills/website-build-skill/playbooks/accessibility.md +91 -0
- package/skills/website-build-skill/playbooks/choose-stack.md +69 -0
- package/skills/website-build-skill/playbooks/data-and-templates.md +89 -0
- package/skills/website-build-skill/playbooks/deploy-and-operate.md +87 -0
- package/skills/website-build-skill/playbooks/embed-facades.md +59 -0
- package/skills/website-build-skill/playbooks/image-pipeline.md +73 -0
- package/skills/website-build-skill/playbooks/performance-budgets.md +76 -0
- package/skills/website-build-skill/playbooks/research-and-memory.md +398 -0
- package/skills/website-build-skill/playbooks/security-headers.md +132 -0
- package/skills/website-build-skill/playbooks/self-hosted-fonts.md +62 -0
- package/skills/website-build-skill/playbooks/structured-data-and-llms.md +84 -0
- package/skills/website-build-skill/prompts/00-start.md +94 -0
- package/skills/website-build-skill/prompts/01-website-deep-research.md +233 -0
- package/skills/website-build-skill/prompts/03-extract-brand-kit.md +46 -0
- package/skills/website-build-skill/prompts/04-three-mockups.md +44 -0
- package/skills/website-build-skill/prompts/05-stack-and-build.md +46 -0
- package/skills/website-build-skill/prompts/06-site-audit.md +39 -0
- package/skills/website-build-skill/prompts/07-accessibility-contrast.md +38 -0
- package/skills/website-build-skill/prompts/08-seo-aeo.md +72 -0
- package/skills/website-build-skill/prompts/09-security-headers.md +40 -0
- package/skills/website-build-skill/prompts/10-adversarial-pre-ship.md +44 -0
- package/skills/website-build-skill/prompts/11-ship-and-verify.md +44 -0
- package/skills/website-build-skill/prompts/12-web-design-team.md +141 -0
- package/skills/website-build-skill/references/stacks/framework.md +76 -0
- package/skills/website-build-skill/references/stacks/scripted-static.md +76 -0
- package/skills/website-build-skill/references/stacks/static-html.md +72 -0
- package/skills/website-build-skill/roles/builder.md +139 -0
- package/skills/website-build-skill/roles/coordinator.md +132 -0
- package/skills/website-build-skill/roles/designer.md +125 -0
- package/skills/website-build-skill/roles/graphics.md +126 -0
- package/skills/website-build-skill/roles/optimizer.md +129 -0
- package/skills/website-build-skill/roles/researcher.md +202 -0
- package/skills/website-build-skill/roles/reviewer.md +139 -0
- package/skills/website-build-skill/templates/audit-brief.md +63 -0
- package/skills/website-build-skill/templates/brand.md +53 -0
- package/skills/website-build-skill/templates/brief.md +51 -0
- package/skills/website-build-skill/templates/evidence.md +100 -0
- package/skills/website-build-skill/templates/handoff.yaml +23 -0
- package/skills/website-build-skill/templates/install-choice.txt +28 -0
- package/skills/website-build-skill/templates/site-operations.md +71 -0
- package/skills/website-build-skill/templates/status.md +47 -0
- package/skills/website-build-skill/templates/tokens.json +72 -0
- package/src/agents.mjs +7 -0
- package/src/bundle.mjs +106 -0
- package/src/catalog.mjs +12 -0
- package/src/choice.mjs +6 -0
- package/src/cli.mjs +96 -0
- package/src/install.mjs +344 -0
- package/src/library-check.mjs +106 -0
- package/src/validate.mjs +351 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Zero install
|
|
2
|
+
|
|
3
|
+
Paste this self-contained starter into an AI chat. It needs no repository retrieval, clone or npm.
|
|
4
|
+
It establishes the first task; attach the full bundles for the complete method.
|
|
5
|
+
|
|
6
|
+
```text
|
|
7
|
+
Use option 1: Teach my AI. Help me build a website with Research, Learn, Ingest, Scope, Match, Mock, Choose, Build, Prove, Protect, Challenge and Ship. First act as Researcher: establish the request date from host evidence, then research the site's design, accessibility, performance, security, stack and search needs using current opened sources. Save a library with source URLs, publication dates or unknown, access dates, disagreements and checklists. If you lack search, say research is BLOCKED and return a query plan. If you lack files, return named bodies for me to save and reattach before passing the save gate. Only then confirm my brief, extract my brand or request profile/banner screenshots, and show three visual mockups. Wait for my named selection before site code. Choose the smallest fitting stack. Keep evidence and handoffs between roles. Protect means security headers and the ship security checklist; Challenge means a different model family reviews a fixed candidate read-only, and I authorize release. This starter is a compact entrypoint, so do not claim Ship until the five bundles or the skill folder supply the full twelve-stage route and its checklists. Start with the site request I provide next; ask only for missing inputs that change the work.
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Full method
|
|
11
|
+
|
|
12
|
+
Paste or attach [method](../docs/bundles/method.md), [prompts](../docs/bundles/prompts.md), [playbooks](../docs/bundles/playbooks.md), [checklists](../docs/bundles/checklists.md) and [team](../docs/bundles/team.md).
|
|
13
|
+
They exist locally and in the public repository: browse [the bundle folder](https://github.com/aunysillyme/website-build-skill/tree/main/docs/bundles), download [the main archive](https://github.com/aunysillyme/website-build-skill/archive/refs/heads/main.zip), or open a raw file such as
|
|
14
|
+
`https://raw.githubusercontent.com/aunysillyme/website-build-skill/main/docs/bundles/method.md`.
|
|
15
|
+
Retrieval serves the files; a host bootstrapping itself from a URL is UNVERIFIED.
|
|
16
|
+
Never substitute a similar repository when retrieval fails. Pin one revision and verify manifest hashes before combining files.
|
|
17
|
+
Without retrieval, supply the text itself. A URL alone is not loaded knowledge.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Compatibility
|
|
2
|
+
|
|
3
|
+
Status vocabulary: DOCUMENTED requires opened official evidence; TESTED requires a recorded actual trial.
|
|
4
|
+
This repository currently makes no TESTED host claim. All package integrations below are UNVERIFIED.
|
|
5
|
+
Candidate interfaces come from the design specification; consult the linked official source before a live trial.
|
|
6
|
+
|
|
7
|
+
| Host | Manual payload | What to verify | Source |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| Claude Code | Complete skill or root plugin | Discovery, invocation, assets and worker isolation | [skills](https://code.claude.com/docs/en/skills) |
|
|
10
|
+
| Codex | Complete skill, explicit router | Shared destination, role configuration, real family | [skills](https://learn.chatgpt.com/docs/build-skills) |
|
|
11
|
+
| Hermes | Complete skill, separate sessions | Trust, alias semantics, routes, inherited permissions | [skills](https://hermes-agent.nousresearch.com/docs/user-guide/features/skills) |
|
|
12
|
+
| Antigravity | Explicit core pointer | Schema, paths, quoted off, routing, denied writes | [subagents](https://antigravity.google/docs/subagents) |
|
|
13
|
+
| Grok Bot | Five bundles, manual roles | Actual account controls, routes, image relay | [Bots](https://docs.x.ai/grok-bot/bots) |
|
|
14
|
+
| Claude Desktop | Five bundles; future skill ZIP | Account upload controls and loaded resources | [skills](https://support.claude.com/en/articles/12512180-use-skills-in-claude) |
|
|
15
|
+
| ChatGPT Project/custom GPT | Instructions plus five bundles | File access, tool availability, state reattachment | [Projects](https://help.openai.com/en/articles/10169521-projects-in-chatgpt) |
|
|
16
|
+
| Generic file-reading agent | Explicit core pointer | Router read-back and preserved instructions | [adapter](../adapters/agents-md.md) |
|
|
17
|
+
|
|
18
|
+
## Evidence required per row
|
|
19
|
+
|
|
20
|
+
Record exact client/runtime version, actual trial date, operating system, artifact revision,
|
|
21
|
+
installed file list and hashes, invocation, observed outputs, negative cases and limitations.
|
|
22
|
+
Retain a sanitized receipt in this repository before promoting the claim.
|
|
23
|
+
Documentation alone cannot establish native loading, enforcement or automatic worker creation.
|
|
24
|
+
Hosted repository checks have a [revision-bound baseline receipt](evidence/audit-baseline.json).
|
|
25
|
+
Those Linux CI checks do not establish client activation. Windows/client trials, registry
|
|
26
|
+
delivery, ZIP upload and raw-URL bootstrap remain UNVERIFIED.
|
|
27
|
+
The maintainer runtime is Node 22.22.3. The package declares Node 18 or newer, and the check
|
|
28
|
+
matrix runs 18, 20, 22.22.3 and 24; no other runtime is claimed.
|
|
29
|
+
|
|
30
|
+
## Degradation
|
|
31
|
+
|
|
32
|
+
The [canonical missing-capability table](../skills/website-build-skill/playbooks/research-and-memory.md#missing-capability-table)
|
|
33
|
+
is included in method and team bundles. It keeps research, visual mockups, measurements,
|
|
34
|
+
independent review and release blocked when their required tools or evidence are missing.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Evaluation and evidence
|
|
2
|
+
|
|
3
|
+
Local deterministic checks and live agent behavior are different claims.
|
|
4
|
+
The checks below reject repository defects; they cannot prove a host obeys an instruction.
|
|
5
|
+
The [baseline receipt](evidence/audit-baseline.json) records a hosted CI run for one
|
|
6
|
+
exact revision. Platform activation, package publication and live model behavior
|
|
7
|
+
remain unproved by that run; check the current candidate separately.
|
|
8
|
+
|
|
9
|
+
## Run the repository gates
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
node scripts/check.mjs
|
|
13
|
+
node --test test/*.test.mjs
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Check performs no writes. The test suite copies synthetic fixtures into `.test-work/`,
|
|
17
|
+
mutates one condition, asserts the named rejection and removes each scratch copy.
|
|
18
|
+
The GREEN control and the RED cases run against the same policy the CLI and CI use; there is
|
|
19
|
+
no separate test-only exemption. The public-identifier policy is resolved: the owning account
|
|
20
|
+
is permitted on the exact CODEOWNERS line and inside repository URLs, and the supported host's
|
|
21
|
+
product name is permitted as a product name. A path-shaped use of that product name is still
|
|
22
|
+
rejected, so a local working directory cannot pass through the exemption, and a test covers
|
|
23
|
+
that case. Private identifiers are also rejected in filenames, not only in file contents.
|
|
24
|
+
|
|
25
|
+
| RED case | Named rejection | Regression |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| Private machine path | PRIVACY | RED01 in privacy.test.mjs |
|
|
28
|
+
| Private issue URL or identifier | PRIVACY | RED02 in privacy.test.mjs |
|
|
29
|
+
| Unavailable install advertised without a same-line label | INSTALL_CLAIM | RED03 in content.test.mjs |
|
|
30
|
+
| Missing Markdown relative target | LINK | RED04 plus image/reference/HTML/anchor controls |
|
|
31
|
+
| Generated bundle bytes drift | BUNDLE_DRIFT | RED05 in content.test.mjs |
|
|
32
|
+
| Floating action reference | ACTION_PIN | RED06 plus reusable-action control |
|
|
33
|
+
| Write token on a read-only job | WORKFLOW_PERMISSIONS | RED07 plus top-level/all-write controls |
|
|
34
|
+
| Inactive archive enters active prompts | ARCHIVE_EXCLUSION | RED08 plus manifest route checks |
|
|
35
|
+
| Unsupported test, measurement, publication or compatibility claim | CLAIM_EVIDENCE | RED09 in README, new docs and CHANGELOG |
|
|
36
|
+
|
|
37
|
+
## Editorial claim gate
|
|
38
|
+
|
|
39
|
+
Every public Markdown document outside canonical assets, generated bundles and inactive test fixtures
|
|
40
|
+
has a reviewed checksum in [content-review.json](evidence/content-review.json).
|
|
41
|
+
New or changed prose fails closed until a maintainer reviews it. This is intentionally broader than a keyword search.
|
|
42
|
+
The generator never updates that ledger. Canonical claims remain covered by manifest hashes and source review;
|
|
43
|
+
generated text must exactly match those sources. A checksum binds review scope, not factual truth.
|
|
44
|
+
The current disposition permits instructions and explicitly qualified status only.
|
|
45
|
+
A positive claim instead needs its exact text and a JSON evidence receipt under `docs/evidence/`
|
|
46
|
+
with command, environment, date, exitCode, artifactSha256 and observed result.
|
|
47
|
+
Reviewers must read that receipt and reproduce material results; a structurally valid receipt can still be false.
|
|
48
|
+
A change to the ledger itself requires code-owner review. No content checker can replace that authority.
|
|
49
|
+
|
|
50
|
+
## Privacy scope
|
|
51
|
+
|
|
52
|
+
The gate scans every public file, including hidden community metadata, fixtures and generated bundles.
|
|
53
|
+
It rejects personal paths, private identifiers, personal names and email addresses without echoing their values.
|
|
54
|
+
Production exceptions are exact license authorship and repository URL namespaces.
|
|
55
|
+
The supported public product name and exact CODEOWNERS handle are narrow, resolved
|
|
56
|
+
exceptions implemented by privacyIssues. Path-shaped uses remain rejected. These
|
|
57
|
+
exceptions do not permit personal identifiers elsewhere.
|
|
58
|
+
The unchanged inactive archive is checksum-pinned; its historical path is never copied into active prompts.
|
|
59
|
+
Scratch fixture copies and version-control internals are outside the public-tree walker.
|
|
60
|
+
The final raw recursive sweep is a separate report step, so any literal policy conflict stays visible.
|
|
61
|
+
|
|
62
|
+
## Structural checks
|
|
63
|
+
|
|
64
|
+
Manifest assets must exist, match digests and contain all seven populated role bodies.
|
|
65
|
+
The README question must match the canonical template. Every generated bundle uses manifest order.
|
|
66
|
+
The workflow validator accepts the JSON subset of YAML, checks every action reference recursively,
|
|
67
|
+
requires read-only permissions except the release publish job's scoped OIDC token, disables persisted checkout credentials,
|
|
68
|
+
and requires concurrency cancellation and job timeouts. Other YAML syntax fails closed pending parser review.
|
|
69
|
+
External URL reachability is outside the offline link check.
|
|
70
|
+
|
|
71
|
+
## Planned live behavior evaluation
|
|
72
|
+
|
|
73
|
+
Run the [end-to-end host trial](evaluation/host-trial.md) to collect a complete
|
|
74
|
+
synthetic SOLO local-preview result and the negative cases below. Its receipt template
|
|
75
|
+
is deliberately NOT RUN. The method's outcome remains unproved until actual artifacts
|
|
76
|
+
and a reproducible trial are reviewed; adding the protocol does not establish support.
|
|
77
|
+
|
|
78
|
+
| Scenario | Required observation |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| Missing brand kit | Requests suitable screenshots and labels inferences |
|
|
81
|
+
| No search or stale library | Returns queries/unresolved claims; no downstream design |
|
|
82
|
+
| Missing source or date | Blocks research and dependent roles |
|
|
83
|
+
| SOLO transition | Reopens library, completes learning and saves self-handoff |
|
|
84
|
+
| TEAM transition | Seven actual routes; Researcher first; Coordinator reads saved evidence |
|
|
85
|
+
| Same-family Reviewer | INTERNAL critique, independent gate BLOCKED |
|
|
86
|
+
| No memory | Returns a save/reattach packet without claiming persistence |
|
|
87
|
+
| Conflicting accents | Surfaces conflict and requests only the decision that changes the design |
|
|
88
|
+
| Hostile fetched text | Refuses instruction injection and keeps authorized write scope |
|
|
89
|
+
| Reviewer allegation | Reproduces before recording a confirmed defect |
|
|
90
|
+
| Date ladder and reuse | Rejects every inactive ASK DATE fixture and passes genuine evidence controls |
|
|
91
|
+
|
|
92
|
+
These are evaluation specifications, not completed trials. Installer regressions run
|
|
93
|
+
as ordinary tests. Cross-platform fresh-package and live-date evaluations remain TODO.
|
|
94
|
+
Run live evaluations only with explicit tool access and an approved budget.
|
|
95
|
+
|
|
96
|
+
## File and evidence index
|
|
97
|
+
|
|
98
|
+
- [Historical local run](evidence/local-checks.json): an earlier TypeScript-era source snapshot; preserve it as historical evidence, not current-candidate validation.
|
|
99
|
+
- [Audit baseline](evidence/audit-baseline.json): exact baseline revision, local checks, hosted CI and registry observation. Rerun gates after changes.
|
|
100
|
+
|
|
101
|
+
- [Floor coverage register](evidence/floor.json): exhaustive section-4 filenames and implementation scope.
|
|
102
|
+
- [Content regressions](https://github.com/aunysillyme/website-build-skill/blob/main/test/content.test.mjs), [privacy regressions](https://github.com/aunysillyme/website-build-skill/blob/main/test/privacy.test.mjs).
|
|
103
|
+
- [Installer boundary](https://github.com/aunysillyme/website-build-skill/blob/main/test/installer.test.mjs), [package boundary](https://github.com/aunysillyme/website-build-skill/blob/main/test/package.test.mjs), [date routing](https://github.com/aunysillyme/website-build-skill/blob/main/test/research-date.test.mjs).
|
|
104
|
+
- [Synthetic missing asset](https://github.com/aunysillyme/website-build-skill/blob/main/test/fixtures/invalid-manifest.json), [brand conflict](https://github.com/aunysillyme/website-build-skill/blob/main/test/fixtures/conflicting-brand.json).
|
|
105
|
+
- [Malicious source](https://github.com/aunysillyme/website-build-skill/blob/main/test/fixtures/malicious-source.md), [incomplete handoff](https://github.com/aunysillyme/website-build-skill/blob/main/test/fixtures/incomplete-handoff.yaml), [date cases](https://github.com/aunysillyme/website-build-skill/blob/main/test/fixtures/ask-date-cases.md).
|
|
106
|
+
- [Bundle generator](../src/bundle.mjs), [validator](../src/validate.mjs), [build entry](https://github.com/aunysillyme/website-build-skill/blob/main/scripts/build.mjs), [check entry](https://github.com/aunysillyme/website-build-skill/blob/main/scripts/check.mjs).
|
|
107
|
+
- [CLI contract](../src/cli.mjs), [choice accessor](../src/choice.mjs), [destination catalog](../src/catalog.mjs), [install contract](../src/install.mjs), [agent contract](../src/agents.mjs).
|
|
108
|
+
- [Entry point](../bin/website-build-skill.mjs), [install engine](../src/install.mjs), [package metadata](../package.json), [lock metadata](https://github.com/aunysillyme/website-build-skill/blob/main/package-lock.json).
|
|
109
|
+
- [Check workflow](https://github.com/aunysillyme/website-build-skill/blob/main/.github/workflows/check.yml), [release boundary](https://github.com/aunysillyme/website-build-skill/blob/main/.github/workflows/release.yml).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Installer contract
|
|
2
|
+
|
|
3
|
+
Status: the installer is implemented; native worker generation is not.
|
|
4
|
+
`npx github:aunysillyme/website-build-skill` copies the canonical files, verifies them by read-back and writes a
|
|
5
|
+
receipt of exactly what it wrote. It never creates a running agent, and host activation stays
|
|
6
|
+
UNVERIFIED until a real client trial. The manual copy route below still works and needs no Node.
|
|
7
|
+
|
|
8
|
+
## Manual copy available now
|
|
9
|
+
|
|
10
|
+
Copy the complete `skills/website-build-skill/` directory into a new, empty destination:
|
|
11
|
+
|
|
12
|
+
| Target | Project destination | Activation status |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| Claude Code | `.claude/skills/website-build-skill/` | UNVERIFIED; read back the entrypoint and assets |
|
|
15
|
+
| Codex | `.agents/skills/website-build-skill/` | UNVERIFIED; inspect discovery and invocation |
|
|
16
|
+
| Hermes | `.agents/skills/website-build-skill/` | UNVERIFIED; trust and shared discovery need a trial |
|
|
17
|
+
| Antigravity | `.website-build-skill/` | Explicit file-reading route; native definitions planned |
|
|
18
|
+
| Generic agent | `.website-build-skill/` | Ask it to read the entrypoint; preserve existing routers |
|
|
19
|
+
| Grok file-capable host | `.grok/skills/website-build-skill/` | UNVERIFIED; otherwise paste bundles |
|
|
20
|
+
|
|
21
|
+
Do not merge into a conflicting directory. Compare and preserve existing files first.
|
|
22
|
+
Copy a router pointer into existing project instructions only with authorization; do not replace them.
|
|
23
|
+
A copied file is prepared content. Discovery and activation require a separate read-back.
|
|
24
|
+
For chat-only hosts, attach the five bundles and use the [Project instructions](../adapters/chatgpt-project.md).
|
|
25
|
+
|
|
26
|
+
## Command interface
|
|
27
|
+
|
|
28
|
+
Before the package is on npm, the same entry point runs from the repository with
|
|
29
|
+
`npx github:aunysillyme/website-build-skill <flags>`, verified to print its version.
|
|
30
|
+
|
|
31
|
+
Installs the files, activation still UNVERIFIED: `npx github:aunysillyme/website-build-skill --solo --target codex --dir . --scope project --yes`.
|
|
32
|
+
Installs the files, activation still UNVERIFIED: `npx github:aunysillyme/website-build-skill --team --target antigravity --dir . --scope project --yes`.
|
|
33
|
+
|
|
34
|
+
- Choice: mutually exclusive `--solo` / `--team`; no arguments asks the canonical human question first.
|
|
35
|
+
- Target: `claude-code`, `codex`, `hermes`, `antigravity`, `grok`, `agents`, `chatgpt`, `portable`.
|
|
36
|
+
- Scope: project by default; user scope requires explicit selection, never implicit fallback.
|
|
37
|
+
- Destination: `--dir` is explicit; `--bundle-dir` is accepted only for the Hermes team alias.
|
|
38
|
+
- Output root: `--output-dir` selects an existing directory separately from the skill destination. Interactive setup collects the save-location choice and path; Enter on the local-folder path uses the website project directory. The receipt records `outputRoot` and optional `outputStorage` (kind and Notion export target). Researcher consumes those values before writing `<outputRoot>/site-work/research/library/scope.md`. The installer only probes the root; it does not create a library or export to Notion. Headless setup without `--output-dir` leaves the root unset for Researcher to ask before writing.
|
|
39
|
+
- Notion: export destination only. Interactive setup requires both the existing local working directory (authoritative) and a page URL or name for later export. No credentials are requested and no network upload occurs.
|
|
40
|
+
- Writability: confirm the output root by writing and reading back before any sweep; an unwritable root fails without partial writes.
|
|
41
|
+
- Headless: `--yes` requires mode, target and destination; EOF and missing arguments fail without writes.
|
|
42
|
+
- Preflight: validate the entire intended output set before writes; reject symlinks, traversal and conflicts.
|
|
43
|
+
- Paths: the project root you name is canonicalized, so a symlinked ancestor such as macOS `/tmp` installs normally. Every segment at or below that root is refused when it is a symlink, because that is what a third party can plant in an install target.
|
|
44
|
+
- Idempotence: identical bytes are a no-op; changed bytes produce a reviewable diff without overwriting.
|
|
45
|
+
- Dry run: `--dry-run` makes no writes, including directories, receipts or aliases.
|
|
46
|
+
- Runtime: offline after package retrieval; no telemetry, profiles, background tasks or lifecycle hooks.
|
|
47
|
+
- Receipt: list every actual path and digest, mode, target, definition and unresolved activation check.
|
|
48
|
+
- Integration: preserve existing routers and emit a named integration snippet; unmerged means activation pending.
|
|
49
|
+
- Interruption: record truthful partial results; never advertise an all-or-nothing transaction without evidence.
|
|
50
|
+
- Exit policy: 0 complete, 2 invalid input, 3 preflight conflict, 4 interrupted write, 5 activation pending. 5 is a completed install whose integration snippet is unmerged, not a failure.
|
|
51
|
+
- Uninstall: receipt-based, removing only files this package actually wrote and whose bytes still match the receipt. A file that was already on disk before the install, and therefore recorded as identical, is kept: installing it was a no-op and removing it would be taking something that is not ours. A changed file is kept and named, and so is a file the receipt does not list. It removes empty directories it created INSIDE the destination; the destination directory itself and any parent directories it had to create are left in place, because the receipt cannot tell them apart from directories that were already there.
|
|
52
|
+
- Destination: decided by `--target` and `--dir`, or by where the receipt sits when only `--receipt` is given. It is never read out of the receipt's own text, so an edited or planted receipt cannot point a removal somewhere else.
|
|
53
|
+
- Read-back: every file is re-read from disk and digested after the write pass. A digest taken from the bytes the installer meant to write is a record of the intention, not of what is on disk, and the receipt only ever carries the second one.
|
|
54
|
+
- Ownership across runs: a reinstall that writes fewer files keeps owning what an earlier run wrote, so a SOLO install over a TEAM install does not orphan the bundles.
|
|
55
|
+
|
|
56
|
+
## Native team branches
|
|
57
|
+
|
|
58
|
+
Generate complete canonical bodies, never independent role summaries.
|
|
59
|
+
Antigravity uses per-role Markdown only after schema, path and permission tests.
|
|
60
|
+
Hermes branch A requires verified declarative role support. Branch B uses separate-session packets and an explicitly scoped skill alias; alias loading never proves worker creation.
|
|
61
|
+
Both branches keep Researcher first, seven acknowledgements, a blocked downstream gate and a different-family Reviewer.
|
|
62
|
+
See [Antigravity](../adapters/antigravity.md), [Hermes](../adapters/hermes.md) and [team ownership](../adapters/team.yaml).
|
|
63
|
+
|
|
64
|
+
## What is proven, and what is not
|
|
65
|
+
|
|
66
|
+
Proven by the test suite and by hand on macOS: traversal and symlink refusal at and below the
|
|
67
|
+
project root, whole-set conflict refusal, idempotent reruns, dry run writing nothing, an
|
|
68
|
+
unwritable output root failing before any skill file, receipt digests matching the bytes on
|
|
69
|
+
disk, uninstall keeping a changed file, router files left untouched with exit 5.
|
|
70
|
+
|
|
71
|
+
Not proven by anyone: host discovery or activation on any client, a fresh tarball trial on
|
|
72
|
+
Linux or Windows, and the native worker generation described below. Record actual results
|
|
73
|
+
before changing a compatibility row.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Library receipt checker
|
|
2
|
+
|
|
3
|
+
## What and why
|
|
4
|
+
|
|
5
|
+
`check-library` checks that a research ledger's opened claims have consistent local
|
|
6
|
+
fetch receipts. It cannot prove a fetch happened, that an excerpt is verbatim, or
|
|
7
|
+
that the excerpt supports the claim. Independent live-page review remains required.
|
|
8
|
+
|
|
9
|
+
## Trigger
|
|
10
|
+
|
|
11
|
+
Run before research acceptance and again when claims or receipts change. AD03,
|
|
12
|
+
AD04 and AD07 consume the result; AD09 adds independent source re-fetching.
|
|
13
|
+
|
|
14
|
+
## Invocation chain
|
|
15
|
+
|
|
16
|
+
Run `website-build-skill check-library <site-work-dir>`. In a repository checkout,
|
|
17
|
+
run `node bin/website-build-skill.mjs check-library <site-work-dir>`.
|
|
18
|
+
The binary calls `src/cli.mjs`, which calls `checkLibrary` in `src/library-check.mjs`.
|
|
19
|
+
The binary prints the result and sets its process exit code. Exit 0 means local
|
|
20
|
+
receipt consistency; exit 2 means invalid input or a failed check, printed to stderr.
|
|
21
|
+
|
|
22
|
+
## Dependencies
|
|
23
|
+
|
|
24
|
+
Node and the package's own modules. No external packages, network access, fetch tool
|
|
25
|
+
credentials, installation writes or background services are needed by the checker.
|
|
26
|
+
|
|
27
|
+
## Reads
|
|
28
|
+
|
|
29
|
+
Relative to the supplied site-work directory, read `research/library/sources.md`
|
|
30
|
+
and `research/library/receipts/<CLAIM-ID>.md` for each ledger claim. Refuse symlink
|
|
31
|
+
paths and unsafe claim IDs. Claim IDs begin with `CLAIM-` and continue with letters,
|
|
32
|
+
digits, hyphens or underscores. Every table row has these columns:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
| Claim ID | Domain | Statement | URL | Published | Accessed | Status | Dependents |
|
|
36
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Use plain cells, escape a literal pipe as `\|`, and write `unknown` for an absent
|
|
40
|
+
publication date. Column names ignore case, spaces, hyphens and underscores.
|
|
41
|
+
The status vocabulary is `OPENED` or `UNVERIFIED`; legacy `Verified` labels in any
|
|
42
|
+
case receive the same receipt checks as `OPENED`, never an exemption.
|
|
43
|
+
|
|
44
|
+
Each receipt contains plain `url:`, `fetched_at:`, `tool:`, `result:`, `published:`
|
|
45
|
+
and `excerpt:` fields. Use an environment-supplied UTC timestamp ending in `Z`,
|
|
46
|
+
with seconds and optional three-digit milliseconds. Copy the publication date
|
|
47
|
+
verbatim into both ledger and receipt, or use `unknown`. The date must appear in
|
|
48
|
+
the excerpt. Put the verbatim supporting passage after `excerpt: |`, with every
|
|
49
|
+
line indented two spaces; a single-line `excerpt:` is also accepted. The trimmed
|
|
50
|
+
passage must contain at least 80 characters. Preserve fetch evidence at fetch time.
|
|
51
|
+
|
|
52
|
+
## Writes
|
|
53
|
+
|
|
54
|
+
None. The caller captures the command, exit code and complete output in the gate
|
|
55
|
+
record. The checker lists UNVERIFIED claims even on a successful consistency check.
|
|
56
|
+
|
|
57
|
+
## The closed loop
|
|
58
|
+
|
|
59
|
+
Nothing watches a project library automatically. Researcher runs the check and
|
|
60
|
+
corrects findings; Coordinator reopens the artifacts and records acceptance.
|
|
61
|
+
An acted-on UNVERIFIED claim keeps acceptance BLOCKED even when the checker exits 0.
|
|
62
|
+
Reviewer independently re-fetches the AD09 sample and reports excerpt mismatches.
|
|
63
|
+
Send checker defects to the package maintainer with a synthetic reproducer; send
|
|
64
|
+
source discrepancies to Researcher by claim ID and pause dependent decisions.
|
|
65
|
+
|
|
66
|
+
## Failure modes
|
|
67
|
+
|
|
68
|
+
Missing or malformed ledgers, unsafe paths, duplicate claim IDs, absent or incomplete
|
|
69
|
+
receipts, short excerpts, URL differences, inconsistent publication dates and
|
|
70
|
+
blanket verification over unreceipted rows produce failures. A consistent fabricated
|
|
71
|
+
receipt can still pass: this is a local consistency check, not fetch authentication.
|
|
72
|
+
Timestamp provenance, live support for the claim and freshness require gate review.
|
|
73
|
+
|
|
74
|
+
## Run and verify by hand
|
|
75
|
+
|
|
76
|
+
From the repository root:
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
node bin/website-build-skill.mjs check-library test/fixtures/library-red
|
|
80
|
+
node bin/website-build-skill.mjs check-library test/fixtures/library-green
|
|
81
|
+
node --test test/library-check.test.mjs
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Expect the RED fixture to exit 2 and name both unreceipted claims plus its blanket
|
|
85
|
+
verification claim. Expect GREEN to exit 0 with counts. The fixtures are synthetic
|
|
86
|
+
or inactive regression data, never live research evidence.
|
|
87
|
+
|
|
88
|
+
## Source of truth
|
|
89
|
+
|
|
90
|
+
The implementation is `src/library-check.mjs`. The research policy lives in
|
|
91
|
+
`skills/website-build-skill/checklists/research.md`; receipt authoring is specified
|
|
92
|
+
in `skills/website-build-skill/templates/evidence.md` and
|
|
93
|
+
`skills/website-build-skill/playbooks/research-and-memory.md`.
|
|
94
|
+
Tests live in `test/library-check.test.mjs`. Hosted and live-client behavior remains
|
|
95
|
+
UNVERIFIED until an actual trial is separately authorized and recorded.
|
package/docs/METHOD.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Method
|
|
2
|
+
|
|
3
|
+
Research. Learn. Ingest. Execute: Match. Mock. Build. Prove. Ship.
|
|
4
|
+
The [canonical skill](../skills/website-build-skill/SKILL.md) owns the method.
|
|
5
|
+
|
|
6
|
+
| Stage | Owner | Reviewable result |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| Research | Researcher | Saved library, thirteen-domain coverage, sources and gate receipt |
|
|
9
|
+
| Learn and ingest | Every role | Reopened library, applied checklist and learning receipt |
|
|
10
|
+
| Scope | Coordinator | Brief, capabilities and artifact ownership |
|
|
11
|
+
| Match | Designer | Brand rules, tokens, conflicts and approved inferences |
|
|
12
|
+
| Mock | Designer with Graphics | Three visual directions and a named human selection |
|
|
13
|
+
| Choose and build | Builder | Smallest justified stack and selected implementation |
|
|
14
|
+
| Prove | Builder, Designer, Optimizer | Accessibility, performance and discovery evidence |
|
|
15
|
+
| Protect | Builder | Headers and exposed-surface checks |
|
|
16
|
+
| Challenge | Different-family Reviewer | Read-only findings against a fixed candidate |
|
|
17
|
+
| Ship | Coordinator then Builder | Authorized promotion, live checks and operations document |
|
|
18
|
+
|
|
19
|
+
ASK DATE is the date of the user's request, fixed at engagement start.
|
|
20
|
+
Researcher establishes it before intake using the [canonical rule](../skills/website-build-skill/playbooks/research-and-memory.md#ask-date-rule).
|
|
21
|
+
A source publication/update date describes the source. An access date records an actual opening.
|
|
22
|
+
Revalidation records whether a claim still applies and what was reopened. A freshness window limits reuse.
|
|
23
|
+
A derived floor is a qualified lower bound, never proof of the actual day or later currency.
|
|
24
|
+
Missing provenance or current research keeps dependent work BLOCKED.
|
|
25
|
+
|
|
26
|
+
SOLO follows all seven roles sequentially with self-handoffs and a framing reset.
|
|
27
|
+
TEAM needs separate routes and acknowledgements, one writer per artifact, and a saved research gate.
|
|
28
|
+
Neither mode earns independent review from a second name in the same model family.
|
|
29
|
+
Use PASS, FAIL, BLOCKED or NOT APPLICABLE with evidence. Never convert absence into a pass.
|
|
30
|
+
|
|
31
|
+
The user owns the resulting library, claim ledger, domain checklists, decisions and handoffs.
|
|
32
|
+
Keep them with the website project. The skill repository is the method, not storage for client work.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Provenance
|
|
2
|
+
|
|
3
|
+
The method's research prompts originate in two public posts by the repository's author:
|
|
4
|
+
|
|
5
|
+
- [Research, learn, ingest, then execute](https://x.com/i/status/2095267280053735464): graphics research and evidence-led site review.
|
|
6
|
+
- [Current design research and three brand-matched mockups](https://x.com/i/status/2097418846282145946): browser exploration, brand inputs and design selection before code.
|
|
7
|
+
|
|
8
|
+
Attribution comes from the supplied source record; live post retrieval is UNVERIFIED here.
|
|
9
|
+
The [inactive graphics original](../skills/website-build-skill/archive/graphics-design-original.md) retains its bytes and historical save instruction.
|
|
10
|
+
It is provenance reading only and is excluded from active bundles and stage routes.
|
|
11
|
+
The website research and site audit prompts are adaptations. They are not a recovered historical audit transcript.
|
|
12
|
+
Reported historical measurements are not repeated as package evidence.
|
|
13
|
+
Original package work uses [MIT](../LICENSE). The conduct text retains its own attribution and license.
|
|
14
|
+
No third-party site screenshots, fonts or brand kits are included.
|
|
15
|
+
|
|
16
|
+
## Reference ledger
|
|
17
|
+
|
|
18
|
+
These links are research entrypoints, not evidence that this package was loaded in a client.
|
|
19
|
+
Open current sources and record real source/access dates before relying on a claim.
|
|
20
|
+
|
|
21
|
+
- [WCAG contrast](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html).
|
|
22
|
+
- [Core Web Vitals](https://web.dev/articles/defining-core-web-vitals-thresholds).
|
|
23
|
+
- [Search and AI features](https://developers.google.com/search/docs/appearance/ai-features).
|
|
24
|
+
- [Browser examples](https://threejs.org/examples/).
|
|
25
|
+
- [Host sources and settling checks](COMPATIBILITY.md).
|
|
26
|
+
|
|
27
|
+
## Automation pin provenance
|
|
28
|
+
|
|
29
|
+
The checkout v7.0.1 tag points to commit `3d3c42e5aac5ba805825da76410c181273ba90b1`.
|
|
30
|
+
Source: [upstream tag](https://github.com/actions/checkout/releases/tag/v7.0.1), checked through the GitHub API in the baseline receipt.
|
|
31
|
+
This identifies the pin; it is not an audit of the action or a hosted workflow run.
|
|
32
|
+
|
|
33
|
+
The setup-node v7.0.0 tag points to commit `820762786026740c76f36085b0efc47a31fe5020`.
|
|
34
|
+
Source: [upstream tag](https://github.com/actions/setup-node/releases/tag/v7.0.0), checked through the GitHub API in the baseline receipt.
|
|
35
|
+
These tag checks identify pins only; they are not an audit of the actions. See the
|
|
36
|
+
[baseline receipt](evidence/audit-baseline.json) for the separate hosted-check observation.
|
package/docs/TIPS.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Tips
|
|
2
|
+
|
|
3
|
+
1. Start with one audience and one primary action. A page needs a job before decoration.
|
|
4
|
+
2. Give the agent approved brand files. If absent, supply profile and banner screenshots and review the inferences.
|
|
5
|
+
3. Ask for three materially different mockups using the same copy. Select a named direction before code.
|
|
6
|
+
4. Save the research library. A summary without sources cannot support the next worker's decisions.
|
|
7
|
+
5. Reopen library files before each role. Send disagreements back to Researcher with claim IDs.
|
|
8
|
+
6. Choose the smallest stack that meets the actual interactions and publishing needs.
|
|
9
|
+
7. Make another page a data record and another brand a token set where the site permits it.
|
|
10
|
+
8. Compute contrast for actual text/background pairs. A vivid accent can still be unreadable.
|
|
11
|
+
9. Test the primary journey with keyboard, narrow viewport and reduced motion.
|
|
12
|
+
10. Keep embeds behind accessible click-to-play facades and verify the initial network requests.
|
|
13
|
+
11. Ask a different model family to challenge the fixed candidate. Reproduce findings before changing code.
|
|
14
|
+
12. Preserve receipts and a memory packet. Proposed memory is not a saved state.
|
|
15
|
+
13. Keep project work private and publish only the reviewed site artifact.
|
|
16
|
+
14. Treat unavailable tools honestly. A wireframe is planning; a visual mockup requires viewable pixels.
|
|
17
|
+
|
|
18
|
+
Next: [method](METHOD.md), [compatibility](COMPATIBILITY.md), [checklists](bundles/checklists.md).
|