Repository navigation
Use First Draft as one tool for the user's app - #127
Closed
raghubetina wants to merge 1 commit into
Closed
raghubetina wants to merge 1 commit into
raghubetina wants to merge 1 commit into
Conversation
On 2026-10-04 the owner decided that First Draft is a tool in the agent's belt: plan, plan and Compile, or neither, whichever serves the user's goal. The Skill assumed every request was an app First Draft could build and told the user what it could not build only after the first push. An idea whose core is real-time sensors or a game loop got an interview for records it did not need. references/interview.md now starts from the user's goal. Before every interview the agent takes a quick look at how others build similar apps, to choose better questions and defaults. When feasibility is in question, such as sensors, APIs, or real-time behavior, it researches thoroughly and reports what it found with sources. As soon as it is clear, it says which of four ways First Draft helps: plan and Compile, plan and Compile the backbone while native Swift or Kotlin carries the core, plan only, or not at all, naming the right tool. A fitting app gets no fit talk. The modeling guide keeps three lists in implementation-notes.md and the read-back: what First Draft builds, what is built otherwise, and feasibility findings and open questions. The description now triggers on a request to make or plan an app or game. SKILL.md routes in one line and shrinks from 20,332 to 20,313 bytes by tightening the schema, read-back, and download paragraphs. Rehearsals ran in fresh Claude Code 2.1.286 sessions on Opus 5.5 (claude -p with only this worktree's plugin loaded): - Race-car coaching: three web searches, then an opening turn with sourced findings (1 Hz phone GPS, 10-25 Hz external receivers, Garmin Catalyst, RaceChrono and Harry's LapTimer) that said First Draft builds the backbone, not the sensor advice. After the answers it pushed a backbone Plan to Production (driver Account, cars, tracks, sessions, laps; iPhone and Android requested): valid, two gaps, both phone clients not generated because every page needs sign-in. It named that consequence and asked the user to choose. - First-person shooter: with an app-only description the Skill did not trigger and the agent began building a game itself. With "app or game" it triggered, named Godot, Unity, Unreal, and Three.js, offered First Draft later for accounts or leaderboards, and pushed no Plan. - Family network: the first run opened with "fits this tool well", so the fitting case now says not to mention fit; the rerun had none. With research always on, a third run made two searches (FamilyAlbum and Tinybeans, Instagram clones in Rails), noted that only invited people see posts and that follows add little for one family, and asked the usual three questions without fit talk or a push. - The Rails-maintenance and CSV-analysis controls did not trigger it. Five structural eval cases cover the fit decisions. The version, its CHANGELOG entry, and the tarball digest stay with the 0.8.4 release.
raghubetina
force-pushed
the
skill-fit-check
branch
from
October 5, 2026 01:10
3a11011 to
ba97889
Compare
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
On 2026-10-04 the owner decided: "First Draft is a tool in the agent's belt. It should use it in whatever way helps achieve the user's goals: whether to only plan, plan and emit, or neither." The Skill assumed every request was an app First Draft could build, and it said what First Draft could not build only after the first push. An idea whose core is real-time sensors or a game loop got an interview for records it did not need.
Decisions as implemented
Start from the user's goal. The frontmatter
descriptionnow reads: "Use when someone asks for help making or planning an app or game, even one First Draft may not fit. Experimental: researches whether the idea is possible and how similar things are built, then uses First Draft where it helps: Foundation Plans, analysis, and bounded Rails/iPhone/Android Compile for records, people, permissions, lists, and forms. Says early when First Draft won't cover the core, and what will." It is 411 characters, with the trigger first. The limits: this repository's test and the Agent Skills spec cap it at 1,024 characters. Claude Code truncatesdescriptionpluswhen_to_useat 1,536 characters in its listing. Codex shortens descriptions when many Skills are installed and advises putting the trigger words first. The description test now checks the new fragments.Research before building, always. The new section
references/interview.md#start-from-the-users-goalfollows the owner's follow-up decision. Before every interview, the agent takes a quick look of a few searches at how others build similar apps (common features, patterns, pitfalls) and uses it to pick better questions and defaults. It researches thoroughly only when feasibility is in question: device capabilities, outside data or APIs, store rules, or real-time behavior. In that case it opens the first turn with a few sourced lines. For a fitting app it still says nothing about fit, but may mention one or two findings. The tool-library and home-inventory opening cases now forbid only a First Draft service request, not any network request.Say how First Draft helps, as soon as it's clear. There are four outcomes:
After that, the 0.8.3 interview runs unchanged for the First Draft part.
Three lists.
implementation-notes.mdkeeps## What First Draft builds,## What is built otherwise,## Feasibility findings and open questions, then## After Compile. The modeling guide's read-back now has five items: what First Draft builds (the plain summary), what is not generated yet, what is built otherwise, feasibility findings and open questions, and the technical block. The evaluator protocol matches.Safety: I added no rule. In both race-car runs the agent decided on its own that advice must be spoken, and that the app is for closed tracks.
Placement and SKILL.md bytes
SKILL.md is 20,313 bytes, down from 20,332 on
main(−19). That stays under the 20,480 cap. The body adds one routing sentence in "Interview and author incrementally" and a reframed two-line intro. To pay for them I tightened three paragraphs without changing their meaning: the JSON Schema paragraph, the read-back order sentence, and the download description. Detail lives inreferences/interview.mdandreferences/modeling-guide.md. No new reference file was added, so the packaging inventory is unchanged.Rehearsals
Each run used a fresh session:
claude -p --setting-sources local --plugin-dir <this worktree>, with only this plugin loaded and no user CLAUDE.md. The Claude Code version was 2.1.286 and the modelclaude-opus-5-5. I played the user minimally.plan initand pushed a backbone Plan to Production: Project01a1096c-f01a-77e0-a77d-50e235af2809, graph version 2, Plan SHA-256746c8d4c…. The first push got a 422 schema error (icon names, a missing Association authorization), which it fixed. It pushed once more to add adriver.sessionsinverse.valid, GapSet6495a813…with 2 gaps, bothfoundation_plan.gap.native_client.not_generated(iOS and Android). Every page is signed-in, so there is no public index. There were 15public_scaffoldwarnings on Policy-protected pages, and the Account generated without a gap.implementation-notes.mdhad the three lists. Its feasibility list named sources without links, so the guide now asks for source links. I stopped before Compile..firstdraft/was created and no Plan was pushed. It did not search the web, since engine choice is well known.Evals
There are five new structural cases:
fit-partial-opening-race-coachingandfit-partial-backbone-plan-race-coaching: the owner's case (a), split so the opening turn and the backbone push can each be graded from one prompt.fit-none-first-person-shooterfit-full-family-photo-networkfit-plan-only-other-stackThe two
should_trigger: falsecontrols are unchanged.CI
Local
sh script/check(stub CLI) passes 85/85. With the pinned CLI checkout, the only failure isplugin tarball must match its release compatibility digest;check-cli-contractpasses. The version, CHANGELOG version label, andplugin_source.tarball_sha256are deliberately left to the 0.8.4 release PR. So hosted CI is expected to fail on that one digest assertion until this is rebased onto the 0.8.4 release branchplugin-0-8-4. That rebase will happen when the branch exists.Proposed CHANGELOG bullet
This text is also in
CHANGELOG.mdunder an undated "Pending for 0.8.4" heading. The checks accept that heading, and the 0.8.4 entry should absorb it:Docs: updated
SKILL.md,references/interview.md,references/modeling-guide.md, the evaluator interview protocol, andCHANGELOG.md(Pending for 0.8.4)