[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C58HPBGCTZPBSWW01KG6ZP":3,"skill-same:01M6C58HPBGCTZPBSWW01KG6ZP":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6C58HPBGCTZPBSWW01KG6ZP","arch-contract",null,"Define aligned domain, data, API, and interface contracts without exposing internal storage as the public boundary.","Lyther\u002Fagent-surface","Lyther","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F29906124?v=4","01M6C587M9T34T0SAGJSRK043Y","Enderaoe","01M6C587R0TXH3MFR8SRFPV61G",65,"MIT","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Farch-contract\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36],"arch contract","contract","arch","storage","data","boundary","api","public","contracts","domain","define","as","interface","2026-11-10 10:12:30",false,"---\nname: arch-contract\ndescription: \"Define aligned domain, data, API, and interface contracts without exposing internal storage as the public boundary.\"\n---\n\n## Objective\n\nProduce or update the architecture contract as one coherent decision:\n\n- the internal domain and data model, when the system owns state;\n- the external and in-process interface contracts, when callers cross a boundary;\n- the explicit mapping between internal entities and boundary DTOs;\n- the matching `## Data and State` and `## Interfaces and Contracts` sections of `docs\u002Farchitecture.md`.\n\nDomain and data describe internal truth (entities, relationships, invariants, ownership, storage, lifecycle); interfaces describe promises across boundaries (operations, inputs, outputs, errors, authorization, compatibility, retry). Keep the two views aligned without collapsing them: storage rows and internal entities are never the public contract by default, every exposed field and operation maps deliberately to domain behavior, and every material invariant has one owner.\n\nDefine the smallest contract that meets current requirements, with required behavior precise and speculative surfaces left out. Invent no persistence, endpoints, transports, or versioning the concept and architecture do not require. Mark a track `NOT_APPLICABLE` with evidence when the system genuinely has no owned state or no callable boundary; report `RESEARCH_REQUIRED` when a required decision lacks evidence.\n\n## Input\n\nRead in order:\n\n1. Explicit user requirements and constraints.\n2. `docs\u002Fcontext\u002Fconcept-zero.md` or the verified equivalent.\n3. `docs\u002Farchitecture.md`, especially system context, boundaries, data, interfaces, and source tree.\n4. Existing schemas, migrations, ORM or domain types, route definitions, public types, protocol files, and handlers.\n5. Repository conventions for storage, validation, serialization, identity, authorization, errors, and compatibility.\n6. Authoritative standards or platform docs, only where the selected contract depends on them.\n\nPreserve the established stack and datastore unless the user asks for a change; report conflicts instead of silently migrating or adding another representation.\n\n## Principles\n\n- Requirements determine entities and interactions; schema and transport follow.\n- Keep one canonical representation per fact and generate or derive secondary forms instead of hand-maintaining equivalent schemas.\n- Never expose secrets, storage keys, internal flags, or implementation-specific fields across a boundary.\n- Add an entity, field, operation, index, version, or transport only for a current requirement.\n- Assign each invariant to one constraint, type, validator, or domain module.\n- Use one error model, authorization model, pagination strategy, and compatibility policy per surface unless a named requirement forces a difference.\n- Ordering, limits, idempotency, null semantics, failure behavior, and lifecycle are part of the contract.\n- Treat persisted-data and published-interface compatibility as deliberate lifecycle decisions.\n\n## Procedure\n\nModel internal truth before boundary shapes, but design both in the same run.\n\n1. Establish applicability: state the system owns versus reads from another system; entities and relationships stakeholders recognize; callers and interactions crossing process, service, plugin, library, UI, CLI, or MCP boundaries; the system of record for each stateful concept; and what is explicitly not stored or exposed. Classify the domain\u002Fdata and interface tracks as `REQUIRED`, `NOT_APPLICABLE`, or `RESEARCH_REQUIRED`; implementation not having started is not `NOT_APPLICABLE`.\n2. Define the domain model. Per entity: meaning and owner; identity, attributes, types, required versus optional state, and allowed values; relationships and cardinality; uniqueness and other invariants; sensitivity and retention; the component that enforces each invariant. Prefer stable identities, explicit optionality, typed time and money, and closed sets where supported, and make illegal states hard to represent without adding ceremony to trivial fields.\n3. When the system owns persistent state, map the model to the selected store: the canonical schema, migration, or ORM representation; primary, foreign, unique, and check constraints; indexes justified by actual access paths; transaction and consistency boundaries; deletion, retention, recovery, and corruption posture; versioned migration and rollback. Keep schema and domain types aligned from one canonical representation where practical. Add no datastore, cache, queue, event log, or replication path without a current requirement.\n4. For each required boundary, choose the simplest transport the architecture already supports and define: consumer, trigger, operation, and stable name; inputs, outputs, validation, and nullability; result and error behavior; authentication and authorization; idempotency and retry; ordering, pagination, filtering, and limits where relevant; compatibility, deprecation, and migration. Use the repository's native contract form (OpenAPI, GraphQL SDL, protobuf, MCP schemas, public language types, CLI grammar, or another established source). Never add HTTP, GraphQL, RPC, streaming, or messaging to appear complete.\n5. For every request and response shape, map fields and operations to domain concepts; state where boundary validation ends and domain validation begins, validating external input before it becomes domain state; exclude secrets and internal-only state; separate create and update inputs from stored entities and returned DTOs; and verify interface behavior preserves domain invariants. Resolve naming or type disagreements explicitly; never duplicate a model under two names or serialize a storage record as a shortcut.\n6. Write only the artifacts the selected stack needs: schema, migrations, ORM or domain types, and a concise data dictionary for non-obvious fields; API, RPC, MCP, CLI, or public-library contract files; the `docs\u002Farchitecture.md` data and interface sections, linking canonical sources; and an ERD or boundary\u002Fdataflow view through `arch-diagram` when relationships are not obvious in prose.\n7. Run the cheapest real checks available: schema or migration validation, contract lint, breaking-change comparison, type-check, build, and relevant real tests. Missing tooling or prerequisites make that proof `BLOCKED`; never substitute a fake contract path.\n\nStop on a material unresolved product or compatibility decision instead of guessing a contract that implementation would entrench.\n\n## Output\n\n1. Domain\u002Fdata contract: canonical model artifacts, owned invariants, migration posture, and data dictionary, or an evidenced `NOT_APPLICABLE`.\n2. Interface contract: canonical machine-readable or typed boundary artifacts with behavior and compatibility rules, or an evidenced `NOT_APPLICABLE`.\n3. Mapping: explicit entity-to-DTO and validation ownership, including fields that must never cross the boundary.\n4. Architecture documentation: synchronized `Data and State`, `Interfaces and Contracts`, and source ownership references.\n\n## Report\n\nReport Changed (full paths to the model, schema, interface, dictionary, and architecture artifacts); Applicability (each track `REQUIRED` or `NOT_APPLICABLE`, with evidence); Checks (real schema, migration, contract, type, build, and test commands as `passed`, `failed`, `blocked`, or `not run`); Blockers (unresolved contract decisions, whether a human must act, and the unblock path); and the next command, usually `arch-diagram`, `workflow-boss`, or a named implementation workflow.\n","## Objective\n\nProduce or update the architecture contract as one coherent decision:\n\n- the internal domain and data model, when the system owns state;\n- the external and in-process interface contracts, when callers cross a boundary;\n- the explicit mapping between internal entities and boundary DTOs;\n- the matching `## Data and State` and `## Interfaces and Contracts` sections of `docs\u002Farchitecture.md`.\n\nDomain and data describe internal truth (entities, relationships, invariants, ownership, storage, lifecycle); interfaces describe promises across boundaries (operations, inputs, outputs, errors, authorization, compatibility, retry). Keep the two views aligned without collapsing them: storage rows and internal entities are never the public contract by default, every exposed field and operation maps deliberately to domain behavior, and every material invariant has one owner.\n\nDefine the smallest contract that meets current requirements, with required behavior precise and speculative surfaces left out. Invent no persistence, endpoints, transports, or versioning the concept and architecture do not require. Mark a track `NOT_APPLICABLE` with evidence when the system genuinely has no owned state or no callable boundary; report `RESEARCH_REQUIRED` when a required decision lacks evidence.\n\n## Input\n\nRead in order:\n\n1. Explicit user requirements and constraints.\n2. `docs\u002Fcontext\u002Fconcept-zero.md` or the verified equivalent.\n3. `docs\u002Farchitecture.md`, especially system context, boundaries, data, interfaces, and source tree.\n4. Existing schemas, migrations, ORM or domain types, route definitions, public types, protocol files, and handlers.\n5. Repository conventions for storage, validation, serialization, identity, authorization, errors, and compatibility.\n6. Authoritative standards or platform docs, only where the selected contract depends on them.\n\nPreserve the established stack and datastore unless the user asks for a change; report conflicts instead of silently migrating or adding another representation.\n\n## Principles\n\n- Requirements determine entities and interactions; schema and transport follow.\n- Keep one canonical representation per fact and generate or derive secondary forms instead of hand-maintaining equivalent schemas.\n- Never expose secrets, storage keys, internal flags, or implementation-specific fields across a boundary.\n- Add an entity, field, operation, index, version, or transport only for a current requirement.\n- Assign each invariant to one constraint, type, validator, or domain module.\n- Use one error model, authorization model, pagination strategy, and compatibility policy per surface unless a named requirement forces a difference.\n- Ordering, limits, idempotency, null semantics, failure behavior, and lifecycle are part of the contract.\n- Treat persisted-data and published-interface compatibility as deliberate lifecycle decisions.\n\n## Procedure\n\nModel internal truth before boundary shapes, but design both in the same run.\n\n1. Establish applicability: state the system owns versus reads from another system; entities and relationships stakeholders recognize; callers and interactions crossing process, service, plugin, library, UI, CLI, or MCP boundaries; the system of record for each stateful concept; and what is explicitly not stored or exposed. Classify the domain\u002Fdata and interface tracks as `REQUIRED`, `NOT_APPLICABLE`, or `RESEARCH_REQUIRED`; implementation not having started is not `NOT_APPLICABLE`.\n2. Define the domain model. Per entity: meaning and owner; identity, attributes, types, required versus optional state, and allowed values; relationships and cardinality; uniqueness and other invariants; sensitivity and retention; the component that enforces each invariant. Prefer stable identities, explicit optionality, typed time and money, and closed sets where supported, and make illegal states hard to represent without adding ceremony to trivial fields.\n3. When the system owns persistent state, map the model to the selected store: the canonical schema, migration, or ORM representation; primary, foreign, unique, and check constraints; indexes justified by actual access paths; transaction and consistency boundaries; deletion, retention, recovery, and corruption posture; versioned migration and rollback. Keep schema and domain types aligned from one canonical representation where practical. Add no datastore, cache, queue, event log, or replication path without a current requirement.\n4. For each required boundary, choose the simplest transport the architecture already supports and define: consumer, trigger, operation, and stable name; inputs, outputs, validation, and nullability; result and error behavior; authentication and authorization; idempotency and retry; ordering, pagination, filtering, and limits where relevant; compatibility, deprecation, and migration. Use the repository's native contract form (OpenAPI, GraphQL SDL, protobuf, MCP schemas, public language types, CLI grammar, or another established source). Never add HTTP, GraphQL, RPC, streaming, or messaging to appear complete.\n5. For every request and response shape, map fields and operations to domain concepts; state where boundary validation ends and domain validation begins, validating external input before it becomes domain state; exclude secrets and internal-only state; separate create and update inputs from stored entities and returned DTOs; and verify interface behavior preserves domain invariants. Resolve naming or type disagreements explicitly; never duplicate a model under two names or serialize a storage record as a shortcut.\n6. Write only the artifacts the selected stack needs: schema, migrations, ORM or domain types, and a concise data dictionary for non-obvious fields; API, RPC, MCP, CLI, or public-library contract files; the `docs\u002Farchitecture.md` data and interface sections, linking canonical sources; and an ERD or boundary\u002Fdataflow view through `arch-diagram` when relationships are not obvious in prose.\n7. Run the cheapest real checks available: schema or migration validation, contract lint, breaking-change comparison, type-check, build, and relevant real tests. Missing tooling or prerequisites make that proof `BLOCKED`; never substitute a fake contract path.\n\nStop on a material unresolved product or compatibility decision instead of guessing a contract that implementation would entrench.\n\n## Output\n\n1. Domain\u002Fdata contract: canonical model artifacts, owned invariants, migration posture, and data dictionary, or an evidenced `NOT_APPLICABLE`.\n2. Interface contract: canonical machine-readable or typed boundary artifacts with behavior and compatibility rules, or an evidenced `NOT_APPLICABLE`.\n3. Mapping: explicit entity-to-DTO and validation ownership, including fields that must never cross the boundary.\n4. Architecture documentation: synchronized `Data and State`, `Interfaces and Contracts`, and source ownership references.\n\n## Report\n\nReport Changed (full paths to the model, schema, interface, dictionary, and architecture artifacts); Applicability (each track `REQUIRED` or `NOT_APPLICABLE`, with evidence); Checks (real schema, migration, contract, type, build, and test commands as `passed`, `failed`, `blocked`, or `not run`); Blockers (unresolved contract decisions, whether a human must act, and the unblock path); and the next command, usually `arch-diagram`, `workflow-boss`, or a named implementation workflow.\n",{"name":5,"description":7},"main","bb71e1631303bd27cb8ac18dc04830c97db8ac4d","skills\u002Farch-contract",0,"https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface","https:\u002F\u002Fgithub.com\u002FLyther","Why so serious?","2026-11-12 01:02:43",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Lyther\u002Fagent-surface --skill arch-contract",{"tool":56,"command":57},"bunx","bunx skills add Lyther\u002Fagent-surface --skill arch-contract",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Lyther\u002Fagent-surface --skill arch-contract","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Farch-contract\u002FSKILL.md",true,[],[65,91,105,119,138,149],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":76,"publishedAt":37},"01M6C5CQAHK34J7RNHEJE1G366","workflow-runtime","Prove skill or workflow discovery, full-autonomy tool execution, and task-shaped materialization before assigning a CLI, extension, provider, or model to a workflow role.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-runtime\u002FSKILL.md",[71],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[77,78,79,80,81,82,83,84,85,86,87,88,89,90],"workflow","workflow runtime","runtime","execution","cli","discovery","tool","model","autonomy","provider","task","full","extension","role",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":37},"01M6C5CNCTDS39453E66MQYTTQ","workflow-reviewer","Review batched implementation output against the BOSS spec and evidence.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-reviewer\u002FSKILL.md",[],[98,99,77,100,101,102,103,104],"workflow reviewer","reviewer","spec","review","evidence","implementation","output",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":37},"01M6C5CKVKQF6NE9263HGRB2K3","workflow-rescue","Resolve repeated workflow failures with a single decisive action.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-rescue\u002FSKILL.md",[111],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},[77,113,114,115,116,117,118],"workflow rescue","rescue","single","decisive action","with","action",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":37},"01M6C5CHCW474Y5F49WME2G12H","workflow-orchestrator","Run risk-adaptive development, review, multi-agent, and release workflows with runtime preflight, bounded retries, liveness checks, isolated writers, and evidence-backed handoffs.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-orchestrator\u002FSKILL.md",[125],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},[127,128,77,117,129,101,130,131,132,133,134,135,102,79,136,137],"orchestrator","workflow orchestrator","development","workflows","run","release","risk","preflight","multi-agent","multi","retries",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":37},"01M6C5CFCYEW1J4ETBNDD4EQPK","workflow-judger","Arbitrate repeated task failures and decide merge, rework, or escalation.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-judger\u002FSKILL.md",[],[145,77,146,147,148,87],"workflow judger","merge","escalation","decide",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":37},"01M6C5CDADZX0YM26H2QWWDJMF","workflow-doctor","Validate active workflow state before any role acts on it.","https:\u002F\u002Fgithub.com\u002FLyther\u002Fagent-surface\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow-doctor\u002FSKILL.md",[155],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},[77,157,158,159,160,161,162,90],"workflow doctor","doctor","validate","state","active","it"]