Maintain Chatto's current runtime architecture inventory in docs/architecture/. Use when adding, changing, removing, auditing, or documenting runtime components, projections or snapshots, NATS and JetStream resources, subject namespaces and event types, runtime-state keys, durable effects, ConnectRPC or Operator API mounts, or realtime delivery architecture. By default, inspect the codebase, apply all in-scope inventory fixes, and validate them; report without editing only when the user or parent workflow explicitly requests an audit, review, report, or propose-only result.
77
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Keep docs/architecture/ aligned with the current codebase. Record what exists,
where it lives, who owns it, and its current operational contract.
docs/architecture/.docs/GLOSSARY.md.Link relevant ADRs and FDRs from inventory files without restating their rationale. Keep compatibility facts only while they constrain current reads, writes, cleanup, mixed-version operation, or stored data.
Use maintenance mode by default. Requests such as "use this skill", "refresh the architecture inventory", "update the architecture docs", or "make the inventory current" authorize edits to the relevant documentation. In maintenance mode:
Do not stop after identifying missing items. Findings are an intermediate work list, not the maintenance-mode deliverable. Do not ask for approval before ordinary inventory edits.
Use report-only mode only when the user explicitly asks for findings,
proposals, or an audit/review/check without changes, or when a parent workflow
explicitly says it is propose-only. An explicit request to fix, apply, update,
or refresh takes precedence over audit/review wording. In report-only mode,
make no edits and return the findings with suggested actions. For example,
chatto-checkup is intentionally propose-only and overrides this skill's
default maintenance mode.
Inventory maintenance does not authorize unrelated implementation changes. If repository evidence reveals a likely code defect or a decision that requires a new ADR/FDR, make the inventory accurately describe the current runtime, then report the separate issue instead of silently changing product behaviour.
docs/architecture/INDEX.md.Do not load every inventory file for a category-scoped change. Perform a full inventory audit only when the user explicitly requests an architecture audit, checkup, or complete refresh.
File: docs/architecture/runtime-components.md
Use cli/internal/core/core.go, cli/internal/core/*_model.go, runtime-unit
wiring, and worker/service constructors to inventory current models, facades,
publishers, and long-running components. Record stable diagnostic keys,
ownership, lifecycle, and responsibilities.
File: docs/architecture/projections.md
Use NewChattoCore, projector constructors, Subjects() methods,
cli/internal/core/projection_subjects_test.go, and snapshot codecs/storage
wiring. Inventory registered parent projectors, logical subject filters, nested
read models, primary readers, and snapshot support. Do not list nested read
models as independently registered projectors.
File: docs/architecture/nats-resources.md
Find current CreateOrUpdateStream, CreateOrUpdateKeyValue, and
CreateOrUpdateObjectStore calls. Record resource name, type, storage,
retention/TTL role, backup status, and owner. Do not reintroduce retired
resource inventories merely because old backups or compatibility readers can
contain them.
File: docs/architecture/subjects-and-events.md
Use cli/internal/evtstream/subjects.go,
cli/internal/core/subjects/subjects.go, durable event protobufs, and live
publishers. Inventory envelope boundaries, subject grammar, aggregate families,
durable event-token-to-protobuf mappings, and transient/live roots. Existing
durable protobuf field numbers and subject tokens are persistence contracts.
File: docs/architecture/runtime-state.md
Search the owning models for KV Get, Put, Create, Update, Delete, and
watch calls and for Object Store or S3 key construction. Record key/object
shape, encoded value, owner, TTL, persistence, backup status, and security
properties. Preserve an explicit unavailable state where operational data can
be absent; do not document missing data as a healthy zero value.
File: docs/architecture/durable-effects.md
Inventory work that crosses from a durable fact into another store or external service. For each effect, record its durable trigger or invariant, immediate execution, restart and multi-replica recovery, idempotency boundary, and known gap. Verify claims against worker, lease, cursor, retry, and focused test code.
File: docs/architecture/interfaces.md
Use cli/internal/connectapi/api.go, HTTP mount code, and public proto service
declarations. Inventory transports, packages, mounted services, service-level
auth policy, public versus Operator listener boundaries, reflection, and
exceptional CORS/GET behaviour.
Do not maintain a per-RPC table here. Individual methods, request/response
shapes, and method documentation belong in protobuf comments and the generated
docs website API reference. Instead, compare declared public services with the
handlers returned by API.Handlers() and API.OperatorHandlers(). In
maintenance mode, fix inventory drift immediately; report a suspected
source-registration defect separately when correcting it would require an
implementation decision.
File: docs/architecture/realtime-delivery.md
Use the realtime proto, HTTP handler, MyEventsModel/MyEventsHub, presence
fanout, and client event bus. Inventory the handshake and transport only at the
level needed to explain server architecture; focus on ingress roots,
classification, projection waits, authorization, queue/failure behaviour, and
projected-read catch-up. Leave exhaustive frame documentation in protobuf
comments and generated API docs.
docs/GLOSSARY.md if canonical
vocabulary changes.docs/ARCHITECTURE.md as a short compatibility landing page.docs/architecture/INDEX.md when adding, removing, or renaming a
category.Run checks proportional to the categories touched:
NewChattoCore.projection_subjects_test.go.API.Handlers() and
API.OperatorHandlers(); do not reconstruct an endpoint reference.docs/architecture/INDEX.md navigation.mise license-check when files were added or moved across license
boundaries.Report exactly which categories and checks were covered. Never describe a category-scoped refresh as a full architecture audit.
In maintenance mode, completion means the affected inventory files have been edited and validated and no known in-scope documentation drift remains. A findings-only response is incomplete unless report-only mode applies.
65f65c3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.