{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clean-code",
    "name": "Clean Code",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/gabrielsubtil/clean-code",
    "canonicalUrl": "https://clawhub.ai/gabrielsubtil/clean-code",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clean-code",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clean-code",
    "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/clean-code"
    },
    "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/clean-code",
    "agentPageUrl": "https://openagent3.xyz/skills/clean-code/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clean-code/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clean-code/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": "Clean Code - Pragmatic AI Coding Standards",
        "body": "CRITICAL SKILL - Be concise, direct, and solution-focused."
      },
      {
        "title": "Core Principles",
        "body": "PrincipleRuleSRPSingle Responsibility - each function/class does ONE thingDRYDon't Repeat Yourself - extract duplicates, reuseKISSKeep It Simple - simplest solution that worksYAGNIYou Aren't Gonna Need It - don't build unused featuresBoy ScoutLeave code cleaner than you found it"
      },
      {
        "title": "Naming Rules",
        "body": "ElementConventionVariablesReveal intent: userCount not nFunctionsVerb + noun: getUserById() not user()BooleansQuestion form: isActive, hasPermission, canEditConstantsSCREAMING_SNAKE: MAX_RETRY_COUNT\n\nRule: If you need a comment to explain a name, rename it."
      },
      {
        "title": "Function Rules",
        "body": "RuleDescriptionSmallMax 20 lines, ideally 5-10One ThingDoes one thing, does it wellOne LevelOne level of abstraction per functionFew ArgsMax 3 arguments, prefer 0-2No Side EffectsDon't mutate inputs unexpectedly"
      },
      {
        "title": "Code Structure",
        "body": "PatternApplyGuard ClausesEarly returns for edge casesFlat > NestedAvoid deep nesting (max 2 levels)CompositionSmall functions composed togetherColocationKeep related code close"
      },
      {
        "title": "AI Coding Style",
        "body": "SituationActionUser asks for featureWrite it directlyUser reports bugFix it, don't explainNo clear requirementAsk, don't assume"
      },
      {
        "title": "Anti-Patterns (DON'T)",
        "body": "❌ Pattern✅ FixComment every lineDelete obvious commentsHelper for one-linerInline the codeFactory for 2 objectsDirect instantiationutils.ts with 1 functionPut code where used\"First we import...\"Just write codeDeep nestingGuard clausesMagic numbersNamed constantsGod functionsSplit by responsibility"
      },
      {
        "title": "🔴 Before Editing ANY File (THINK FIRST!)",
        "body": "Before changing a file, ask yourself:\n\nQuestionWhyWhat imports this file?They might breakWhat does this file import?Interface changesWhat tests cover this?Tests might failIs this a shared component?Multiple places affected\n\nQuick Check:\n\nFile to edit: UserService.ts\n└── Who imports this? → UserController.ts, AuthController.ts\n└── Do they need changes too? → Check function signatures\n\n🔴 Rule: Edit the file + all dependent files in the SAME task.\n🔴 Never leave broken imports or missing updates."
      },
      {
        "title": "Summary",
        "body": "DoDon'tWrite code directlyWrite tutorialsLet code self-documentAdd obvious commentsFix bugs immediatelyExplain the fix firstInline small thingsCreate unnecessary filesName things clearlyUse abbreviationsKeep functions smallWrite 100+ line functions\n\nRemember: The user wants working code, not a programming lesson."
      },
      {
        "title": "🔴 Self-Check Before Completing (MANDATORY)",
        "body": "Before saying \"task complete\", verify:\n\nCheckQuestion✅ Goal met?Did I do exactly what user asked?✅ Files edited?Did I modify all necessary files?✅ Code works?Did I test/verify the change?✅ No errors?Lint and TypeScript pass?✅ Nothing forgotten?Any edge cases missed?\n\n🔴 Rule: If ANY check fails, fix it before completing."
      },
      {
        "title": "Verification Scripts (MANDATORY)",
        "body": "🔴 CRITICAL: Each agent runs ONLY their own skill's scripts after completing work."
      },
      {
        "title": "Agent → Script Mapping",
        "body": "AgentScriptCommandfrontend-specialistUX Auditpython .agent/skills/frontend-design/scripts/ux_audit.py .frontend-specialistA11y Checkpython .agent/skills/frontend-design/scripts/accessibility_checker.py .backend-specialistAPI Validatorpython .agent/skills/api-patterns/scripts/api_validator.py .mobile-developerMobile Auditpython .agent/skills/mobile-design/scripts/mobile_audit.py .database-architectSchema Validatepython .agent/skills/database-design/scripts/schema_validator.py .security-auditorSecurity Scanpython .agent/skills/vulnerability-scanner/scripts/security_scan.py .seo-specialistSEO Checkpython .agent/skills/seo-fundamentals/scripts/seo_checker.py .seo-specialistGEO Checkpython .agent/skills/geo-fundamentals/scripts/geo_checker.py .performance-optimizerLighthousepython .agent/skills/performance-profiling/scripts/lighthouse_audit.py <url>test-engineerTest Runnerpython .agent/skills/testing-patterns/scripts/test_runner.py .test-engineerPlaywrightpython .agent/skills/webapp-testing/scripts/playwright_runner.py <url>Any agentLint Checkpython .agent/skills/lint-and-validate/scripts/lint_runner.py .Any agentType Coveragepython .agent/skills/lint-and-validate/scripts/type_coverage.py .Any agenti18n Checkpython .agent/skills/i18n-localization/scripts/i18n_checker.py .\n\n❌ WRONG: test-engineer running ux_audit.py\n✅ CORRECT: frontend-specialist running ux_audit.py"
      },
      {
        "title": "🔴 Script Output Handling (READ → SUMMARIZE → ASK)",
        "body": "When running a validation script, you MUST:\n\nRun the script and capture ALL output\nParse the output - identify errors, warnings, and passes\nSummarize to user in this format:\n\n## Script Results: [script_name.py]\n\n### ❌ Errors Found (X items)\n- [File:Line] Error description 1\n- [File:Line] Error description 2\n\n### ⚠️ Warnings (Y items)\n- [File:Line] Warning description\n\n### ✅ Passed (Z items)\n- Check 1 passed\n- Check 2 passed\n\n**Should I fix the X errors?**\n\nWait for user confirmation before fixing\nAfter fixing → Re-run script to confirm\n\n🔴 VIOLATION: Running script and ignoring output = FAILED task.\n🔴 VIOLATION: Auto-fixing without asking = Not allowed.\n🔴 Rule: Always READ output → SUMMARIZE → ASK → then fix."
      }
    ],
    "body": "Clean Code - Pragmatic AI Coding Standards\n\nCRITICAL SKILL - Be concise, direct, and solution-focused.\n\nCore Principles\nPrinciple\tRule\nSRP\tSingle Responsibility - each function/class does ONE thing\nDRY\tDon't Repeat Yourself - extract duplicates, reuse\nKISS\tKeep It Simple - simplest solution that works\nYAGNI\tYou Aren't Gonna Need It - don't build unused features\nBoy Scout\tLeave code cleaner than you found it\nNaming Rules\nElement\tConvention\nVariables\tReveal intent: userCount not n\nFunctions\tVerb + noun: getUserById() not user()\nBooleans\tQuestion form: isActive, hasPermission, canEdit\nConstants\tSCREAMING_SNAKE: MAX_RETRY_COUNT\n\nRule: If you need a comment to explain a name, rename it.\n\nFunction Rules\nRule\tDescription\nSmall\tMax 20 lines, ideally 5-10\nOne Thing\tDoes one thing, does it well\nOne Level\tOne level of abstraction per function\nFew Args\tMax 3 arguments, prefer 0-2\nNo Side Effects\tDon't mutate inputs unexpectedly\nCode Structure\nPattern\tApply\nGuard Clauses\tEarly returns for edge cases\nFlat > Nested\tAvoid deep nesting (max 2 levels)\nComposition\tSmall functions composed together\nColocation\tKeep related code close\nAI Coding Style\nSituation\tAction\nUser asks for feature\tWrite it directly\nUser reports bug\tFix it, don't explain\nNo clear requirement\tAsk, don't assume\nAnti-Patterns (DON'T)\n❌ Pattern\t✅ Fix\nComment every line\tDelete obvious comments\nHelper for one-liner\tInline the code\nFactory for 2 objects\tDirect instantiation\nutils.ts with 1 function\tPut code where used\n\"First we import...\"\tJust write code\nDeep nesting\tGuard clauses\nMagic numbers\tNamed constants\nGod functions\tSplit by responsibility\n🔴 Before Editing ANY File (THINK FIRST!)\n\nBefore changing a file, ask yourself:\n\nQuestion\tWhy\nWhat imports this file?\tThey might break\nWhat does this file import?\tInterface changes\nWhat tests cover this?\tTests might fail\nIs this a shared component?\tMultiple places affected\n\nQuick Check:\n\nFile to edit: UserService.ts\n└── Who imports this? → UserController.ts, AuthController.ts\n└── Do they need changes too? → Check function signatures\n\n\n🔴 Rule: Edit the file + all dependent files in the SAME task. 🔴 Never leave broken imports or missing updates.\n\nSummary\nDo\tDon't\nWrite code directly\tWrite tutorials\nLet code self-document\tAdd obvious comments\nFix bugs immediately\tExplain the fix first\nInline small things\tCreate unnecessary files\nName things clearly\tUse abbreviations\nKeep functions small\tWrite 100+ line functions\n\nRemember: The user wants working code, not a programming lesson.\n\n🔴 Self-Check Before Completing (MANDATORY)\n\nBefore saying \"task complete\", verify:\n\nCheck\tQuestion\n✅ Goal met?\tDid I do exactly what user asked?\n✅ Files edited?\tDid I modify all necessary files?\n✅ Code works?\tDid I test/verify the change?\n✅ No errors?\tLint and TypeScript pass?\n✅ Nothing forgotten?\tAny edge cases missed?\n\n🔴 Rule: If ANY check fails, fix it before completing.\n\nVerification Scripts (MANDATORY)\n\n🔴 CRITICAL: Each agent runs ONLY their own skill's scripts after completing work.\n\nAgent → Script Mapping\nAgent\tScript\tCommand\nfrontend-specialist\tUX Audit\tpython .agent/skills/frontend-design/scripts/ux_audit.py .\nfrontend-specialist\tA11y Check\tpython .agent/skills/frontend-design/scripts/accessibility_checker.py .\nbackend-specialist\tAPI Validator\tpython .agent/skills/api-patterns/scripts/api_validator.py .\nmobile-developer\tMobile Audit\tpython .agent/skills/mobile-design/scripts/mobile_audit.py .\ndatabase-architect\tSchema Validate\tpython .agent/skills/database-design/scripts/schema_validator.py .\nsecurity-auditor\tSecurity Scan\tpython .agent/skills/vulnerability-scanner/scripts/security_scan.py .\nseo-specialist\tSEO Check\tpython .agent/skills/seo-fundamentals/scripts/seo_checker.py .\nseo-specialist\tGEO Check\tpython .agent/skills/geo-fundamentals/scripts/geo_checker.py .\nperformance-optimizer\tLighthouse\tpython .agent/skills/performance-profiling/scripts/lighthouse_audit.py <url>\ntest-engineer\tTest Runner\tpython .agent/skills/testing-patterns/scripts/test_runner.py .\ntest-engineer\tPlaywright\tpython .agent/skills/webapp-testing/scripts/playwright_runner.py <url>\nAny agent\tLint Check\tpython .agent/skills/lint-and-validate/scripts/lint_runner.py .\nAny agent\tType Coverage\tpython .agent/skills/lint-and-validate/scripts/type_coverage.py .\nAny agent\ti18n Check\tpython .agent/skills/i18n-localization/scripts/i18n_checker.py .\n\n❌ WRONG: test-engineer running ux_audit.py ✅ CORRECT: frontend-specialist running ux_audit.py\n\n🔴 Script Output Handling (READ → SUMMARIZE → ASK)\n\nWhen running a validation script, you MUST:\n\nRun the script and capture ALL output\nParse the output - identify errors, warnings, and passes\nSummarize to user in this format:\n## Script Results: [script_name.py]\n\n### ❌ Errors Found (X items)\n- [File:Line] Error description 1\n- [File:Line] Error description 2\n\n### ⚠️ Warnings (Y items)\n- [File:Line] Warning description\n\n### ✅ Passed (Z items)\n- Check 1 passed\n- Check 2 passed\n\n**Should I fix the X errors?**\n\nWait for user confirmation before fixing\nAfter fixing → Re-run script to confirm\n\n🔴 VIOLATION: Running script and ignoring output = FAILED task. 🔴 VIOLATION: Auto-fixing without asking = Not allowed. 🔴 Rule: Always READ output → SUMMARIZE → ASK → then fix."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/gabrielsubtil/clean-code",
    "publisherUrl": "https://clawhub.ai/gabrielsubtil/clean-code",
    "owner": "gabrielsubtil",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clean-code",
    "downloadUrl": "https://openagent3.xyz/downloads/clean-code",
    "agentUrl": "https://openagent3.xyz/skills/clean-code/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clean-code/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clean-code/agent.md"
  }
}