Repository navigation
Development Release
This page shows how the types work, what CI runs, how to make a release, and how to publish the wiki. Read Development first.
- The root
tsconfig.jsongives an editor the types of the hooks module. It extendsplugins/claudetto/tsconfig.json. - Claude Code writes the
.claude-plugin/types/folders and atsconfig.jsonwhen an interactive session loads a plugin from your checkout, such as injust sandbox. Git ignores these files.just checkneeds them, and CI does not. - A session with
-pdoes not write the types. So a new clone gets them only from an interactive session. - A linked worktree has no types.
just typecheckrunstools/types.ts, which copies the missing folders from the main worktree. Whenplugins/claudetto/.claude-plugin/types/tsconfig.jsonis still missing, the script stops and tells you to start an interactive session. - Claude Code writes the types again at each load, from the tools of that session. So a test gives no field that only some sessions have.
The workflows are in .github/workflows/.
| Workflow | When it runs | What it does |
|---|---|---|
ci.yml |
Each push and pull request | The check job runs just ci on Ubuntu and macOS, with Bun from package.json, just 1.58.0, and Claude Code 2.1.303. Require the all-green job in branch protection |
claude.yml |
An @claude mention in an issue, review comment, or review |
Answers with anthropics/claude-code-action, only for users with write access. It needs the CLAUDE_CODE_OAUTH_TOKEN secret and the Claude GitHub App. Its steps skip when the secret is empty, so a fork has no failed run |
eval-new-claude-code.yml |
Each day at 06:00 UTC, and workflow_dispatch. Never on a pull request |
Runs just eval for each release tag of anthropics/claude-code that is higher than the version in ci.yml. A cache entry marks each tag, so it runs once. Set the input force to run a marked tag again |
When an eval fails, fix the plugin, then set the version in ci.yml to the new release.
just eval --model M runs claude plugin eval on the suite in plugins/claudetto/evals/.
It tests the checkout, not the installed copy.
--max-cost-usd 5 (EVAL_MAX_COST_USD) bounds the cost.
The recipe needs --model, such as --model haiku, because otherwise the eval uses the session model.
A lock stops a second run.
Ask the owner of the repository before each new paid run.
See Evals.
-
Add each change to
CHANGELOG.md. When the version inpackage.jsonhas no tag yet, add the change under the heading of that version. Otherwise add it under## [Unreleased].just bumpfails when that heading is missing. -
Preview the bump, then bump. The level is
major,minor,patch, orX.Y.Z.just bump minor --dry-run just bump minor
just bumpchanges theversionline ofpackage.jsonand two lines ofCHANGELOG.md. It moves the[Unreleased]entries under a dated heading. -
Copy the version to each
plugin.json, then commit.just generate
Commit before you tag.
claude plugin tagchecks that eachplugin.jsonagrees with its marketplace entry, and it stops on a dirty tree. -
Run
just release-check. It fails while a row offindings.mdhas aTaskthat is notnone,done, or(checked). -
Preview the tags, then tag and push.
just release --dry-run just release
just release checks the tree, the generated files, and the tag names of all plugins before it tags.
So a bad manifest stops the release with no tag made.
It then pushes all tags to origin in one atomic push.
When a tag step or the push fails, it deletes the tags it made.
The notes of each release are in Release History.
- Edit a page in
src/wiki/.just generatewriteswiki/from it. Do not editwiki/by hand.tests/support/wiki-links.test.tschecks that each link resolves and each page name is unique. - Run
just wikito publishwiki/to the GitHub wiki.
The wiki repository exists only after the first page is made in the GitHub web UI.
claudetto
- Start
- Slices
- Add-Ons
- Reference
- Rationale
- Evidence
- Development
Claude Code 2.1.303
- Start
- Models and Context
- Configure
- Extend
- Findings