Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Capture a human-approved UI design lesson as a privacy-minimized local StyleSeed candidate, review it, and prepare an opt-in share package without transmitting project code, prompts, screenshots, or brand data. Use when a person asks StyleSeed to remember, learn from, generalize, review, or prepare a reusable rule from an accepted design correction.
.claude/skills/bitjaru-ss-learn/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 11% | 0% |
ss-learn turns a specific human-approved correction into a generalized candidate rule. It does not train a model, scrape a repository, or upload telemetry. The CLI is local-only. An optional plugin MCP bridge can expose one exact package to its connected client/model only after a separate one-time human grant.
Read references/privacy-contract.md before using this skill.
proprietary tokens, or user content.
null or not-run; never infer.STYLESEED.md instead.After explicit user approval:
bashnode <installed-ss-learn>/scripts/learning.mjs init --project-root .
This creates .styleseed/learning/config.json with sharing disabled and all raw-material collection disabled. It performs no network request.
Use references/candidate.schema.json. Generalize the lesson:
Do not include project names, URLs, paths, emails, source snippets, prompts, screenshots, colors, font names, or component names. Then capture it:
bashnode <installed-ss-learn>/scripts/learning.mjs capture \ --project-root . \ --input /path/to/candidate.json
The CLI validates maintained context IDs, exact fields, privacy patterns, and evidence honesty. It writes an immutable draft ID under .styleseed/learning/candidates/.
Show the full candidate to the user. Only after their explicit accept/reject decision run:
bashnode <installed-ss-learn>/scripts/learning.mjs review \ --project-root . \ --id <candidate-id> \ --decision accepted \ --reviewer <local-alias> \ --reason "<why this generalizes>" \ --attestation APPROVE_LOCAL_REVIEW
Use --decision rejected for a counterexample. Never accept on the user's behalf. A candidate is content-addressed and receives one final local decision; revise the source lesson and capture a new candidate instead of rewriting an accepted or rejected record.
Only an accepted candidate can be packaged. Show the sanitized payload and ask separately whether the user approves export for team-registry or community-candidate:
bashnode <installed-ss-learn>/scripts/learning.mjs prepare-share \ --project-root . \ --id <candidate-id> \ --purpose team-registry \ --attestation APPROVE_LOCAL_EXPORT
This writes .styleseed/learning/share/<id>.<purpose>.json. It strips reviewer identity and local paths, binds the payload to the engine revision, and records a content hash. It does not send the file anywhere.
Only when the user separately approves exposing the prepared package to the connected MCP client and its model, run:
bashnode <installed-ss-learn>/scripts/learning.mjs grant-mcp-read \ --project-root . \ --package .styleseed/learning/share/<package.json> \ --attestation APPROVE_MCP_READ
The grant is bound to the package hash and accepted local review. The MCP bridge consumes it before returning the package, so retries fail closed. This is client/model exposure even though the MCP server itself performs no network request. Never describe it as remaining local after consumption.
A share package is evidence, not a StyleSeed rule. Central or team promotion requires multiple independent projects, counterexamples, accessibility and grammar regression checks, benchmark evidence, and named maintainer approval. Never edit core rules automatically from local learning.
Report separately:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,853 | 17,550 | +78% | 1 | 1 | 0% | 533 | 3,912 | +634% | 0 | 0 | — |
case-02 | fail→pass | 17,723 | 14,754 | -17% | 1 | 1 | 0% | 2,714 | 3,354 | +24% | 0 | 0 | — |
case-03 | fail→fail | 15,958 | 7,937 | -50% | 1 | 1 | 0% | 2,403 | 1,481 | -38% | 0 | 0 | — |
case-04 | fail→pass | 8,117 | 9,019 | +11% | 1 | 1 | 0% | 1,239 | 2,579 | +108% | 0 | 0 | — |
case-05 | fail→pass | 8,589 | 4,626 | -46% | 1 | 1 | 0% | 1,405 | 1,852 | +32% | 0 | 0 | — |
case-06 | fail→pass | 15,005 | 12,682 | -15% | 1 | 1 | 0% | 2,262 | 3,081 | +36% | 0 | 0 | — |
case-07 | fail→pass | 13,093 | 6,140 | -53% | 1 | 1 | 0% | 1,851 | 2,051 | +11% | 0 | 0 | — |
case-08 | pass→pass | 11,675 | 4,689 | -60% | 1 | 1 | 0% | 1,669 | 1,798 | +8% | 0 | 0 | — |
case-09 | fail→fail | 21,241 | 3,435 | -84% | 1 | 1 | 0% | 3,448 | 1,610 | -53% | 0 | 0 | — |
case-10 | fail→pass | 31,504 | 2,944 | -91% | 1 | 1 | 0% | 1,987 | 1,593 | -20% | 0 | 0 | — |
case-11 | fail→pass | 17,514 | 3,124 | -82% | 1 | 1 | 0% | 2,633 | 1,642 | -38% | 0 | 0 | — |
case-12 | fail→pass | 9,689 | 5,326 | -45% | 1 | 1 | 0% | 1,420 | 1,960 | +38% | 0 | 0 | — |
case-13 | pass→pass | 10,634 | 5,653 | -47% | 1 | 1 | 0% | 1,555 | 1,985 | +28% | 0 | 0 | — |
case-14 | fail→pass | 15,509 | 3,991 | -74% | 1 | 1 | 0% | 2,250 | 1,772 | -21% | 0 | 0 | — |
case-15 | fail→pass | 11,012 | 2,718 | -75% | 1 | 1 | 0% | 1,703 | 1,506 | -12% | 0 | 0 | — |
case-16 | pass→pass | 11,067 | 7,952 | -28% | 1 | 1 | 0% | 1,607 | 1,855 | +15% | 0 | 0 | — |
case-17 | fail→pass | 33,829 | 3,813 | -89% | 1 | 1 | 0% | 2,499 | 1,733 | -31% | 0 | 0 | — |
case-18 | pass→pass | 13,136 | 4,632 | -65% | 1 | 1 | 0% | 1,809 | 1,734 | -4% | 0 | 0 | — |
case-19 | fail→pass | 10,340 | 6,907 | -33% | 1 | 1 | 0% | 1,818 | 2,131 | +17% | 0 | 0 | — |
case-20 | fail→pass | 32,117 | 2,812 | -91% | 1 | 1 | 0% | 1,914 | 1,562 | -18% | 0 | 0 | — |
case-21 | pass→pass | 8,412 | 4,693 | -44% | 1 | 1 | 0% | 1,285 | 1,538 | +20% | 0 | 0 | — |
case-22 | pass→pass | 11,082 | 4,276 | -61% | 1 | 1 | 0% | 1,796 | 1,800 | +0% | 0 | 0 | — |
case-23 | pass→pass | 12,684 | 7,942 | -37% | 1 | 1 | 0% | 1,946 | 2,207 | +13% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +57 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.