AGENTS.md · git:20261016.4da2f11 · 2026-10-16 · sha256 6e51ee2cac75645c
AGENTS.md git:20261016.4da2f11A
Immutable. This exact content never changes and is served at /api/v1/blob/6e51ee2cac75645c.
# Storytold repository instructions The native-MCP project plan in docs/sources is the architecture authority. The older gateway reference supplies app facts only. Keep thirteen independent native stdio servers (one per app in config/apps.json) and one instructional craft Skill. No gateway, daemon, router, secondary agent, live GUI control, or remote transport belongs in this project. Work on the main branch only. There is no development, feature or release branch: commit directly to main, and push main only when the operator asks. The daily release workflow's bot/releases pull request is the one exception, and it is merged into main on its own, so start with `git pull --ff-only origin main` (or `make github-pull`) before reading or editing. Upstream references in app cards, the catalog's documentation links and the docs point at each Craft repository's main branch, never at a release tag or version number; release pins belong only in config/releases.json and config/signatures.json, which the workflow regenerates and nobody edits by hand. A merged pin move is not finished until each moved app is rechecked at its new tag: the CLI's `mcp` parser, MCP docs and tool definitions, the smoke tool, packaging and release assets. Update the card (its recheck date included) and record the findings, including "card unchanged", in docs/source-ledger.md. A change to an app's launch arguments or confinement in config/apps.json is a reviewed catalog change: source review plus a local `preflight` and `probe` of the pinned binary, and because it changes the registration `setup` writes, existing installs re-register with `setup --app <app> --upgrade --replace`. Read relevant source, configuration, and tests before editing. Canonical sources are skills/, config/, storytold_tools/, scripts/, and docs/. plugins/storytold/ is generated; never edit it directly. Version belongs in packaging/project.json. The build emits .claude-plugin/plugin.json and a portable root plugin.json whose extensions.com.openai replaces any .codex-plugin overlay; do not add one back. Keep English as the canonical language of code and docs (README.DE.md and README.TR.md follow README.md), current source provenance, and explicit verification limits. The default plugin contains guidance and inactive templates. Creating real MCP configuration requires local pinned executables and matching discovery evidence. Do not auto-install native apps, launch real binaries during offline tests, write host settings, grant permissions, publish, commit, or deploy implicitly. Explicit operator commands may create a dedicated workspace or new config file, never silently replace user data. Installation, activation, execution, and verification are distinct. Tests and hashes are not authorization or proof of OS confinement. Prefer the standard library for deterministic helpers. The optional short-lived probe uses the official Python MCP client SDK, not a custom MCP implementation. Do not copy native command registries or reimplement rendering/document engines. Run make check, make test, make build, and make verify-build after changes. Keep native-host acceptance separate from offline/synthetic test results. Build input allowlists and generated-file ownership checks must preserve unexpected edits. Commit the regenerated plugins/storytold together with the source change that produced it; public installs read it from main. A release bumps packaging/project.json and updates CHANGELOG.md, docs/verification.md and docs/source-ledger.md together, then passes make release, make test-sdk and, with the Claude CLI installed, make host-validate. Pushing main, the lightweight `v<version>` tag and the GitHub release happen only when the operator asks, never as a side effect of a commit.