{
  "schemaVersion": "1.0",
  "item": {
    "slug": "codifica",
    "name": "Codifica",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/davidedicillo/codifica",
    "canonicalUrl": "https://clawhub.ai/davidedicillo/codifica",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/codifica",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=codifica",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/codifica"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/codifica",
    "agentPageUrl": "https://openagent3.xyz/skills/codifica/agent",
    "manifestUrl": "https://openagent3.xyz/skills/codifica/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/codifica/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Codifica Protocol Agent",
        "body": "You are operating in a repository that uses the Codifica protocol (v0.2) — a file-based protocol for coordinating work between humans and AI agents.\n\nCodifica uses plain text files committed with the code. There is no external service, no API, no database. Git is the audit log."
      },
      {
        "title": "Before doing any work",
        "body": "Read codifica.json at the repo root\nRead the spec file it references (the spec field — typically codifica-spec.md)\nRead ALL state files matching the state field (may be a string, glob, or array)\n\nDo not proceed without reading the spec.\n\nIf codifica.json does not exist in the repo, this protocol does not apply — work normally."
      },
      {
        "title": "Understanding codifica.json",
        "body": "{\n  \"protocol\": \"codifica\",\n  \"version\": \"0.2\",\n  \"spec\": \"codifica-spec.md\",\n  \"state\": \"work.md\",\n  \"assets\": \"assets/\",\n  \"rules\": \"strict\"\n}\n\nKey fields:\n\nstate — path to the state file(s). May be \"work.md\", \"work/*.md\", or an array like [\"work/active.md\", \"work/done.md\"]\nrules — may be a string (\"strict\") or an object with allowed_agents, file_scope, max_concurrent_tasks_per_agent, stale_claim_hours, and custom_types\n\nIf rules is an object, check:\n\nallowed_agents — if non-empty and your agent name is not listed, stop and ask a human\nfile_scope.include / file_scope.exclude — do not modify files outside the allowed scope\nmax_concurrent_tasks_per_agent — do not claim more tasks than this limit"
      },
      {
        "title": "Finding work",
        "body": "Scan all state files for tasks where:\n\nstate is todo\nowner matches your agent name (agent:<your-name>) or is unassigned\nAll depends_on tasks have state: done\n\nPick by priority: critical > high > normal > low.\n\nAmong equal priority, prefer tasks with no depends_on (leaf tasks first)."
      },
      {
        "title": "Claiming a task",
        "body": "Before starting work, you MUST claim the task in a single atomic commit:\n\nSet state: in_progress\nSet owner: agent:<your-name>\nSet claimed_at: <ISO-8601 timestamp>\nAdd a state_transitions entry recording the claim\n\nCommit all these changes together. If you are working with a remote, push immediately. If the push fails (another agent claimed first), do NOT start work — pull, re-evaluate, and pick a different task.\n\nAn unassigned task in in_progress is a protocol violation."
      },
      {
        "title": "Reading context before starting",
        "body": "Before starting a task, read its context field:\n\ncontext.files — read these files for background\ncontext.references — read execution_notes from these prior task IDs\ncontext.constraints — hard rules beyond acceptance criteria\ncontext.notes — free-form guidance from the human\n\nIf the task has depends_on, also read the dependency tasks' execution_notes (especially the summary) and artifacts for handoff context."
      },
      {
        "title": "Doing the work",
        "body": "Follow the task's acceptance criteria. Respect any context.constraints. Work within the file_scope defined in codifica.json."
      },
      {
        "title": "Recording completion",
        "body": "When you complete work, update the task in the state file:\n\nAdd an execution_notes entry:\nexecution_notes:\n  - by: agent:<your-name>\n    note: |\n      Description of what you did.\n    summary: \"Single line, max 120 chars, scannable answer\"\n    timestamp: <ISO-8601>\n    provenance:\n      session_id: <your-session-id-if-available>\n\n\n\nRecord any files you produced in artifacts:\nartifacts:\n  - path: src/feature/new-file.ts\n    type: code\n  - path: assets/TASK-ID/output.csv\n    type: csv\n\n\n\nMove the task to the appropriate next state:\n\nFor build tasks: in_progress → to_be_tested\nFor other types (test, investigate, followup): in_progress → done (may skip to_be_tested)\nSet completed_at: <ISO-8601> when moving to done\n\n\n\nAdd a state_transitions entry:\nstate_transitions:\n  - from: in_progress\n    to: to_be_tested\n    by: agent:<your-name>\n    reason: \"Work completed, ready for testing\"\n    timestamp: <ISO-8601>\n\n\n\nCommit with a message referencing the task ID: FEAT-101: implement login flow"
      },
      {
        "title": "Rules you MUST follow",
        "body": "Pull before reading state files. Pull before writing changes.\nClaim tasks with a single commit before starting work.\nIf your claim push fails, do not start — pick a different task.\nNever edit human_review sections.\nNever delete or modify files in assets/.\nOnly the task owner may move a task from to_be_tested to done.\nNever move tasks to blocked or rejected — only humans may do this.\nNever reclaim stale tasks from other agents — only humans may reclaim.\nDo not start tasks with unmet depends_on.\nInclude a summary (single line, max 120 chars) on your closing execution note.\nRecord artifacts produced by your work.\nSet completed_at when moving a task to done."
      },
      {
        "title": "Requesting a block",
        "body": "If you discover a genuine blocker (missing dependency, failing test, ambiguous requirement):\n\nAdd a note to execution_notes explaining the blocker and recommending the task be blocked\nDo NOT move the task to blocked yourself — only humans may do this"
      },
      {
        "title": "Answering questions about work",
        "body": "When asked about what work has been done (by you or other agents):\n\nScan state files for tasks matching the query (by owner, state, labels, completed_at)\nRead the summary field on closing execution_notes for quick answers\nDrill into full note text and artifacts when more detail is needed\nUse completed_at and labels to filter by time and domain\n\nThis is the structured alternative to reading chat transcripts."
      },
      {
        "title": "Conflicts",
        "body": "If your push fails due to a Git conflict:\n\nPull the latest state\nRe-evaluate whether your changes still apply\nRetry or yield to human resolution\n\nConflicts on the same task should be escalated to a human."
      },
      {
        "title": "Task states reference",
        "body": "todo → in_progress → to_be_tested → done\n         ↓                            ↑\n       blocked ──→ todo ──────────────┘\n         ↓\n       rejected ──→ todo (human-only reopen)\n\nOnly humans may move tasks to blocked or rejected.\nOnly humans may reopen tasks from rejected."
      }
    ],
    "body": "Codifica Protocol Agent\n\nYou are operating in a repository that uses the Codifica protocol (v0.2) — a file-based protocol for coordinating work between humans and AI agents.\n\nCodifica uses plain text files committed with the code. There is no external service, no API, no database. Git is the audit log.\n\nBefore doing any work\nRead codifica.json at the repo root\nRead the spec file it references (the spec field — typically codifica-spec.md)\nRead ALL state files matching the state field (may be a string, glob, or array)\n\nDo not proceed without reading the spec.\n\nIf codifica.json does not exist in the repo, this protocol does not apply — work normally.\n\nUnderstanding codifica.json\n{\n  \"protocol\": \"codifica\",\n  \"version\": \"0.2\",\n  \"spec\": \"codifica-spec.md\",\n  \"state\": \"work.md\",\n  \"assets\": \"assets/\",\n  \"rules\": \"strict\"\n}\n\n\nKey fields:\n\nstate — path to the state file(s). May be \"work.md\", \"work/*.md\", or an array like [\"work/active.md\", \"work/done.md\"]\nrules — may be a string (\"strict\") or an object with allowed_agents, file_scope, max_concurrent_tasks_per_agent, stale_claim_hours, and custom_types\n\nIf rules is an object, check:\n\nallowed_agents — if non-empty and your agent name is not listed, stop and ask a human\nfile_scope.include / file_scope.exclude — do not modify files outside the allowed scope\nmax_concurrent_tasks_per_agent — do not claim more tasks than this limit\nFinding work\n\nScan all state files for tasks where:\n\nstate is todo\nowner matches your agent name (agent:<your-name>) or is unassigned\nAll depends_on tasks have state: done\n\nPick by priority: critical > high > normal > low.\n\nAmong equal priority, prefer tasks with no depends_on (leaf tasks first).\n\nClaiming a task\n\nBefore starting work, you MUST claim the task in a single atomic commit:\n\nSet state: in_progress\nSet owner: agent:<your-name>\nSet claimed_at: <ISO-8601 timestamp>\nAdd a state_transitions entry recording the claim\n\nCommit all these changes together. If you are working with a remote, push immediately. If the push fails (another agent claimed first), do NOT start work — pull, re-evaluate, and pick a different task.\n\nAn unassigned task in in_progress is a protocol violation.\n\nReading context before starting\n\nBefore starting a task, read its context field:\n\ncontext.files — read these files for background\ncontext.references — read execution_notes from these prior task IDs\ncontext.constraints — hard rules beyond acceptance criteria\ncontext.notes — free-form guidance from the human\n\nIf the task has depends_on, also read the dependency tasks' execution_notes (especially the summary) and artifacts for handoff context.\n\nDoing the work\n\nFollow the task's acceptance criteria. Respect any context.constraints. Work within the file_scope defined in codifica.json.\n\nRecording completion\n\nWhen you complete work, update the task in the state file:\n\nAdd an execution_notes entry:\n\nexecution_notes:\n  - by: agent:<your-name>\n    note: |\n      Description of what you did.\n    summary: \"Single line, max 120 chars, scannable answer\"\n    timestamp: <ISO-8601>\n    provenance:\n      session_id: <your-session-id-if-available>\n\n\nRecord any files you produced in artifacts:\n\nartifacts:\n  - path: src/feature/new-file.ts\n    type: code\n  - path: assets/TASK-ID/output.csv\n    type: csv\n\n\nMove the task to the appropriate next state:\n\nFor build tasks: in_progress → to_be_tested\nFor other types (test, investigate, followup): in_progress → done (may skip to_be_tested)\nSet completed_at: <ISO-8601> when moving to done\n\nAdd a state_transitions entry:\n\nstate_transitions:\n  - from: in_progress\n    to: to_be_tested\n    by: agent:<your-name>\n    reason: \"Work completed, ready for testing\"\n    timestamp: <ISO-8601>\n\n\nCommit with a message referencing the task ID: FEAT-101: implement login flow\n\nRules you MUST follow\nPull before reading state files. Pull before writing changes.\nClaim tasks with a single commit before starting work.\nIf your claim push fails, do not start — pick a different task.\nNever edit human_review sections.\nNever delete or modify files in assets/.\nOnly the task owner may move a task from to_be_tested to done.\nNever move tasks to blocked or rejected — only humans may do this.\nNever reclaim stale tasks from other agents — only humans may reclaim.\nDo not start tasks with unmet depends_on.\nInclude a summary (single line, max 120 chars) on your closing execution note.\nRecord artifacts produced by your work.\nSet completed_at when moving a task to done.\nRequesting a block\n\nIf you discover a genuine blocker (missing dependency, failing test, ambiguous requirement):\n\nAdd a note to execution_notes explaining the blocker and recommending the task be blocked\nDo NOT move the task to blocked yourself — only humans may do this\nAnswering questions about work\n\nWhen asked about what work has been done (by you or other agents):\n\nScan state files for tasks matching the query (by owner, state, labels, completed_at)\nRead the summary field on closing execution_notes for quick answers\nDrill into full note text and artifacts when more detail is needed\nUse completed_at and labels to filter by time and domain\n\nThis is the structured alternative to reading chat transcripts.\n\nConflicts\n\nIf your push fails due to a Git conflict:\n\nPull the latest state\nRe-evaluate whether your changes still apply\nRetry or yield to human resolution\n\nConflicts on the same task should be escalated to a human.\n\nTask states reference\ntodo → in_progress → to_be_tested → done\n         ↓                            ↑\n       blocked ──→ todo ──────────────┘\n         ↓\n       rejected ──→ todo (human-only reopen)\n\n\nOnly humans may move tasks to blocked or rejected. Only humans may reopen tasks from rejected."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/davidedicillo/codifica",
    "publisherUrl": "https://clawhub.ai/davidedicillo/codifica",
    "owner": "davidedicillo",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/codifica",
    "downloadUrl": "https://openagent3.xyz/downloads/codifica",
    "agentUrl": "https://openagent3.xyz/skills/codifica/agent",
    "manifestUrl": "https://openagent3.xyz/skills/codifica/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/codifica/agent.md"
  }
}