@lssm-tech/agentpack.contractspec
Canonical repository-local guidance for teams consuming ContractSpec packages. It supplies marker-owned Claude Code, Codex, OpenCode, and Cursor rules, compact catalog memory, adoption hooks, one adoption skill, and local MCP wiring.
contractspec init materializes this pack into the repository-local agentpacks cache and invokes the existing agentpacks compiler. User-owned AGENTS.md and
CLAUDE.md content is preserved by agentpacks managed markers. The pack never writes global Claude Desktop or Codex configuration.
Claude Code hooks use the Claude blocking protocol (--host claudecode), so an adoption denial actually blocks in Claude Code instead of surfacing as a non-blocking exit code, and an adoption review follows the session permission mode (no prompt in bypassPermissions/dontAsk, where the review is deferred and recorded; a prompt in default; a deny in plan). A workspace that has not enabled Connect (connect.enabled, off by default) is not prompted: the adoption hooks stay silent there. The shell hook matches both Bash and PowerShell, and SessionStart runs contractspec can-help catalog status --host claudecode, which adds one line of catalog context (version, source, freshness, content hash, counts, and the can-help discovery command) instead of raw JSON. These hooks need a ContractSpec CLI that supports can-help catalog status --host and connect hook adoption ... --host. The catalog memory rule loads only when package manifests or .contractspec/** files are read.
The adoption skill activates for capability selection, replacement, or a new public surface/dependency. It uses current catalog provenance and task-bound Connect decisions, then verifies affected consumers. Routine unrelated edits do not need an adoption ceremony.
Published rule/skill files and the materialized contractSpecAgentPackFiles map are one surface; bun test src/index.test.ts checks their parity.