Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ canonical Skills and bundled CLI are packaged once for Claude Code and Codex. UI
app's own design and components. The public catalog and Drawing Board pins determine what an installed workspace
actually receives.

Source candidate `0.5.0` requires CLI `0.5.0`, Service API `0.5`, and Foundation Plan `0.21`. It preserves the planning
Source candidate `0.6.0` requires CLI `0.6.0`, Service API `0.6`, and Foundation Plan `0.22`. It preserves the planning
workspace under `.firstdraft/design/` and defaults to current-folder local output. Use explicit `--github` for server
Publication. Its identities belong in
[release compatibility](release/compatibility.json). The [public catalog](.claude-plugin/marketplace.json) owns the
Expand All @@ -22,7 +22,7 @@ local folder; a Drawing Board clone and GitHub push are unnecessary. The

- the portable create-full-stack-app Skill and its task routing;
- deferred UI extension and consistency-review Skill auditions;
- beginner-to-machine-reference authoring guidance for Foundation Plan 0.21;
- beginner-to-machine-reference authoring guidance for Foundation Plan 0.22;
- the exact schema, examples, and review checklists packaged with the Skill;
- behavioral evaluations for agent workflow changes;
- shared Claude/Codex plugin assembly around the canonical Skills and reviewed CLI package; and
Expand All @@ -39,8 +39,8 @@ behavior. This repository teaches an agent how to use those contracts without cr
| Understand the installed workflow | [Skill entrypoint](skills/create-full-stack-app/SKILL.md) |
| Continue or review an app's UI | The app's `UI.md` and shared components; [UI Skill status](#ui-continuation) |
| Change Plan authoring guidance | [Skill entrypoint](skills/create-full-stack-app/SKILL.md), then [modeling guide](skills/create-full-stack-app/references/modeling-guide.md) |
| Check current Foundation Plan capability | [Foundation Plan reference](skills/create-full-stack-app/references/foundation-plan-021.md) |
| Inspect exact Plan structure | [Bundled schema](skills/create-full-stack-app/references/foundation-plan-0.21.schema.json) |
| Check current Foundation Plan capability | [Foundation Plan reference](skills/create-full-stack-app/references/foundation-plan-022.md) |
| Inspect exact Plan structure | [Bundled schema](skills/create-full-stack-app/references/foundation-plan-0.22.schema.json) |
| Add or run behavioral evaluations | [Evaluation guide](evals/README.md) |
| Inspect a dated observation | [Evidence archive](evidence/README.md) |
| Prepare or promote a release | [Release runbook](RELEASING.md) |
Expand Down
9 changes: 5 additions & 4 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ longer part of an ordinary release. Coordinate the service, CLI, and Skills thro

[`release/compatibility.json`](release/compatibility.json) owns the candidate version, compatible CLI/API/Plan
identities, and deterministic package SHA-256. The current source candidate is
`@firstdraft.com/claude-code@0.5.0` with CLI `0.5.0`, API `>= 0.5.0`, `< 0.6.0`, and Plan `sketch/0.21`.
`@firstdraft.com/claude-code@0.6.0` with CLI `0.6.0`, API `>= 0.6.0`, `< 0.7.0`, and Plan `sketch/0.22`.
The [marketplace manifest](.claude-plugin/marketplace.json) independently selects a published plugin version;
retain its selection until the intended new version is actually published. Source compatibility is not public
catalog selection. Query npm when releasing rather than treating a dated distribution snapshot as current.

Plan `0.21` adds `appearance.theme: "toggle"` and replaces the sole accepted `0.20` input format. API, CLI, and
plugin `0.5.0` record that input and artifact compatibility break. Target `rails-sketch/2026-09`, local-output
defaults, and `.firstdraft/design/` stay the same. There is no retained-Project migration or compatibility bridge.
Plan `0.22` adds optional `application.pwa` and replaces the sole accepted `0.21` input format. Omission and `true`
enable ordinary online installation metadata; `false` omits it. API, CLI, and plugin `0.6.0` record that input and
artifact compatibility break. Target `rails-sketch/2026-09`, local-output defaults, and `.firstdraft/design/` stay
the same. There is no retained-Project migration or compatibility bridge.

Use an ordinary pre-1.0 minor bump for a breaking compatibility change and a patch bump for a compatible change.
Never reuse a published npm version, protected release tag, or marketplace version for different package bytes.
Expand Down
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ historical observations intentionally have different owners.
| How do I repair an existing npm default? | [npm default repair](npm-promotion.md) |
| What does the agent execute? | [`SKILL.md`](../skills/create-full-stack-app/SKILL.md) |
| How does an agent extend or review generated UI? | The app's `UI.md`; [deferred Skill status](../README.md#ui-continuation) |
| What is exact Plan syntax? | [JSON Schema](../skills/create-full-stack-app/references/foundation-plan-0.21.schema.json) |
| What capability is currently described? | [Foundation Plan reference](../skills/create-full-stack-app/references/foundation-plan-021.md) |
| What is exact Plan syntax? | [JSON Schema](../skills/create-full-stack-app/references/foundation-plan-0.22.schema.json) |
| What capability is currently described? | [Foundation Plan reference](../skills/create-full-stack-app/references/foundation-plan-022.md) |
| What happened in a particular run? | [`evidence/README.md`](../evidence/README.md), then one dated record |
| What behavior should a fresh agent exhibit? | [`evals/README.md`](../evals/README.md), then one case |
| Why do historical pins or limitations exist? | [Repository history](../evidence/repository-history.md) or [release history](../evidence/release-history.md) |
Expand Down
4 changes: 3 additions & 1 deletion evals/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ fixtures are review inputs, not execution evidence. Each case declares whether t
artifacts are attached, staged into the project, or retained only as expected output.

The current Plan/analysis fixtures below are synthetic contract inputs, not new Service observations.
Current authoring cases use Foundation Plan `firstdraft.foundation-plan.sketch/0.21` and target
Current authoring cases use Foundation Plan `firstdraft.foundation-plan.sketch/0.22` and target
`rails-sketch/2026-09`. The `appearance-current` Plan/analysis and `resume-current` Plan fixtures replace their older
inputs for new evaluations. The original `appearance-issues` Plan/analysis and `resume` Plan retain the exact bytes
declared by the [September 14 qualification receipt](../evidence/2026-09-14-ui-authoring-skill-0.2.4-qualification.json).
Expand Down Expand Up @@ -89,6 +89,8 @@ or live transport of implementation notes through GitHub Publication.
- `android-preview-respects-provider-limit`
- `preserve-partially-realized-appearance-intent`
- `preserve-browser-theme-and-native-residual`
- `explain-default-browser-installation`
- `preserve-browser-installation-opt-out`
- `correct-source-issue-alongside-capability-gap`
- `analysis-failed-stop`
- `standalone-status-binds-accepted-generation`
Expand Down
44 changes: 41 additions & 3 deletions evals/create-full-stack-app/cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,44 @@
}
]
},
{
"id": "explain-default-browser-installation",
"should_trigger": true,
"prompt": "Before I decide whether to compile the staged Plan, explain its Add to Home Screen behavior on iPhone Safari and Android Chrome. I have not asked for offline access or a custom install prompt. Review only; do not edit or submit the Plan.",
"expectations": [
"Recognizes omitted application.pwa as the target default of enabled online installation metadata and leaves that authored omission unchanged.",
"Explains application identity, suitable icons, the root start URL, and standalone display through the ordinary browser installation flow; keeps Home and its authentication/authorization behavior unchanged.",
"Does not add offline cache, a service worker, Web Push, a custom installation prompt, or a native client. Existing native selection is independent.",
"Separates metadata/HTTP checks, browser installation promotion, actual Add to Home Screen, standalone launch/navigation, and sign-in/relaunch. Says actual iPhone Safari and Android Chrome qualification is pending rather than treating source support or desktop emulation as device proof.",
"Leaves the staged Plan and subject UUIDs unchanged and runs no plan init, plan push, plan status, or plan compile."
],
"artifacts": [
{
"path": "evals/create-full-stack-app/fixtures/application-intent.foundation-plan.json",
"role": "input",
"stage_as": ".firstdraft/foundation-plan.json"
}
]
},
{
"id": "preserve-browser-installation-opt-out",
"should_trigger": true,
"prompt": "The staged Plan deliberately sets application.pwa to false. Explain exactly what that choice changes before I decide whether to compile. Keep my selected Home, browser theme, and both native clients. Does the opt-out stop someone from saving the site to their phone? Review only; do not edit or submit it.",
"expectations": [
"Preserves explicit application.pwa false and explains that it omits the generated manifest route/template/link, installation-capable metadata, manifest request spec, and 192px installation icon together.",
"Explains that favicons, the Apple touch icon, ordinary theme metadata, legal pages, and signup acceptance remain. Does not promise that the opt-out prevents a browser from saving an ordinary site.",
"Keeps home_index movie, appearance.theme toggle, and both selected native clients unchanged; the PWA choice does not replace Home, relax authentication/authorization, remove Appearance, or select/drop a native client.",
"Does not invent offline/cache/push/prompt support or native launcher icon realization. No supplied analysis or compiled output means no current GapSet, generation, browser, or device execution result is claimed.",
"Leaves the complete staged Plan and subject UUIDs unchanged and runs no plan init, plan push, plan status, or plan compile."
],
"artifacts": [
{
"path": "evals/create-full-stack-app/fixtures/pwa-disabled.foundation-plan.json",
"role": "input",
"stage_as": ".firstdraft/foundation-plan.json"
}
]
},
{
"id": "correct-source-issue-alongside-capability-gap",
"should_trigger": true,
Expand Down Expand Up @@ -848,7 +886,7 @@
"should_trigger": true,
"prompt": "Use First Draft to create and send a Foundation Plan for Scalar Showcase, application key scalar_showcase. Model one Movie Entity with one Field of each currently importable scalar type, using a required short_text title as its Primary Descriptor and a decimal rating defaulting to 7.5. The compatible firstdraft CLI is installed, but no JSON Schema 2020-12 validator is available. Do not install or implement one.",
"expectations": [
"Uses Foundation Plan 0.21, the Modeling guide, and Examples for authoring without opening the complete bundled schema.",
"Uses Foundation Plan 0.22, the Modeling guide, and Examples for authoring without opening the complete bundled schema.",
"Runs plan init with the provided application key and name, then runs generate uuid --count 11 through the Skill resolver exactly once for one Entity and ten Fields.",
"Authors one Movie Entity with exactly one Field of each supported scalar type and a required movie.title Field Primary Descriptor.",
"Authors movie.rating as a decimal with literal default value \"7.5\" as a canonical string, never the JSON number 7.5.",
Expand Down Expand Up @@ -1268,7 +1306,7 @@
{
"id": "compile-prepared-movie-catalog",
"should_trigger": true,
"prompt": "I approve the exact pre-Compile semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 025c7021ad31bdd64b01eb007632c000f96a84273d1a53ea41ab5f342d11aa3c. Preserve its intentional Appearance request and publish that exact candidate to one private GitHub repository now.",
"prompt": "I approve the exact pre-Compile semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 e8191ce54fb8827c3ae3d58f8ab9d9fff95a25d640c931a2113115ec4fc4d279. Preserve its intentional Appearance request and publish that exact candidate to one private GitHub repository now.",
"expectations": [
"Requires the installed CLI to expose both plan compile completion modes and no public plan publish command.",
"In the same continuing session, treats the prompt as unambiguous approval of the complete semantic model and reviewed nonempty GapSet, rereads the exact local Plan, verifies its SHA-256 and semantic model are unchanged, and does not ask for a second confirmation or repeat the unchanged read-back.",
Expand All @@ -1294,7 +1332,7 @@
{
"id": "compile-prepared-drawing-board-application",
"should_trigger": true,
"prompt": "I approve the exact pre-Compile Drawing Board semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 025c7021ad31bdd64b01eb007632c000f96a84273d1a53ea41ab5f342d11aa3c. Materialize that exact candidate into the absent ./application directory. Do not create a GitHub repository.",
"prompt": "I approve the exact pre-Compile Drawing Board semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 e8191ce54fb8827c3ae3d58f8ab9d9fff95a25d640c931a2113115ec4fc4d279. Materialize that exact candidate into the absent ./application directory. Do not create a GitHub repository.",
"expectations": [
"Requires the installed CLI to expose plan compile --output as a direct local completion mode while retaining plan compile --github as the separate GitHub Publication mode.",
"In the same continuing session as precompile-drawing-board-read-back, treats the prompt as unambiguous approval of the complete semantic model, reviewed nonempty GapSet, exact Plan bytes, and selected direct local mode; rereads the Plan, verifies its SHA-256 is unchanged, and asks for no second confirmation.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000902",
"graph_version": 1,
"head_source_sha256": "e5d6ed13362d9cddd16a4294239e52761791c2eb52a1a5dbfe4b74f03cad2457",
"head_source_sha256": "3bca1f3f5d5674857f7d3bc44fbd5100b8d4238f7ded4befd10731caac89fa81",
"analyzer_release": "foundation-plan-rails/application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000906",
"graph_version": 1,
"head_source_sha256": "025c7021ad31bdd64b01eb007632c000f96a84273d1a53ea41ab5f342d11aa3c",
"head_source_sha256": "e8191ce54fb8827c3ae3d58f8ab9d9fff95a25d640c931a2113115ec4fc4d279",
"analyzer_release": "foundation-plan-rails/application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand All @@ -18,7 +18,7 @@
"gap_set": {
"format": "firstdraft.foundation-gaps/2",
"source": {
"sha256": "025c7021ad31bdd64b01eb007632c000f96a84273d1a53ea41ab5f342d11aa3c"
"sha256": "e8191ce54fb8827c3ae3d58f8ab9d9fff95a25d640c931a2113115ec4fc4d279"
},
"project": {
"id": "01900000-0000-7000-8000-000000000021",
Expand All @@ -27,7 +27,7 @@
"analysis": {
"release": "foundation-plan-rails/application-2026-09-22-theme"
},
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand All @@ -45,7 +45,7 @@
}
]
},
"gap_set_sha256": "73a0f23d81563e4ea932874fb8af8b6ad4d819304b5917a9798086878a85c03c",
"gap_set_sha256": "76f7b54cf13f7a9b799a498a9a0094417f9b9672a5ae8a8fb1c348a2f8a163f4",
"started_at": "2026-07-30T12:03:00.000Z",
"completed_at": "2026-07-30T12:03:01.000Z"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"format": "firstdraft.foundation-plan.sketch/0.21",
"format": "firstdraft.foundation-plan.sketch/0.22",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000905",
"graph_version": 1,
"head_source_sha256": "25f888477e4ecbbcdcdb8bc32314dab579fb4fe7218e2e4f9915a42ff5f4dc33",
"head_source_sha256": "36c076540a7d0bfa7a78c315de44ca3f708bddd65957e93c125f061433886d7e",
"analyzer_release": "foundation-plan-rails/application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand All @@ -18,7 +18,7 @@
"gap_set": {
"format": "firstdraft.foundation-gaps/2",
"source": {
"sha256": "25f888477e4ecbbcdcdb8bc32314dab579fb4fe7218e2e4f9915a42ff5f4dc33"
"sha256": "36c076540a7d0bfa7a78c315de44ca3f708bddd65957e93c125f061433886d7e"
},
"project": {
"id": "01900000-0000-7000-8000-000000000020",
Expand All @@ -27,14 +27,14 @@
"analysis": {
"release": "foundation-plan-rails/application-2026-09-22-theme"
},
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
},
"gaps": []
},
"gap_set_sha256": "e7ac6578d55ce5ee0b0747b0c07a1553e22b4997e6b4270b132cff373bbc96a9",
"gap_set_sha256": "b8542e1a9a29ab8f6415a94e10d068053ede76c6d6f74cf9b6bcbe1a5521e376",
"started_at": "2026-07-30T12:02:00.000Z",
"completed_at": "2026-07-30T12:02:01.000Z"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"format": "firstdraft.foundation-plan.sketch/0.21",
"format": "firstdraft.foundation-plan.sketch/0.22",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"format": "firstdraft.foundation-plan.sketch/0.21",
"format": "firstdraft.foundation-plan.sketch/0.22",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"format": "firstdraft.foundation-plan.sketch/0.21",
"format": "firstdraft.foundation-plan.sketch/0.22",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000901",
"graph_version": 1,
"head_source_sha256": "cbd591ab9bc46a5efb76383aaec89c26d3d850e473519a5cdedb4e42734cabe0",
"head_source_sha256": "d35994ff8aeb595a17333dd5bb2bf851a617ebcfa1ff395792c306056374de6a",
"analyzer_release": "foundation-plan-rails/application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000907",
"graph_version": 1,
"head_source_sha256": "61a3fc005e97fd0e53f5dd799064b06ef17e0eed9dde4764990ab049f1a61c98",
"head_source_sha256": "e3c78b2e006f5cc12660133b85a14fbe821cdd1ca54b2193158755741d392aed",
"analyzer_release": "foundation-plan-rails/application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-22-theme",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-23-pwa",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09"
Expand Down
Loading
Loading