[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C8Y475MBGMQ2XJS1NFTVVR":3,"skill-same:01M7C8Y475MBGMQ2XJS1NFTVVR":58},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":29,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M7C8Y475MBGMQ2XJS1NFTVVR","docs-sync-edho-ferdian",null,"Keep user-facing docs true to the code: README, codemaps, architecture and API docs; every path, link and snippet checked. Use for \"update dokumentasi\", \"sinkronkan README\", \"codemap sudah basi\", \"cek link di docs\", \"generate codemap\", or after a feature ships.","edhoferdian\u002FEEF","edhoferdian","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64404158?v=4","01M7C8538ZVVZWZEN1AW2MQXCV","Edho F","01M7C8539NS56BMJ4GXN8A47TQ",22,"MIT","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fdocs-sync-edho-ferdian\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: docs-sync-edho-ferdian\ndescription: >-\n  Keep user-facing docs true to the code: README, codemaps, architecture and\n  API docs; every path, link and snippet checked. Use for \"update\n  dokumentasi\", \"sinkronkan README\", \"codemap sudah basi\", \"cek link di\n  docs\", \"generate codemap\", or after a feature ships.\nmetadata:\n  last_reviewed: \"2026-09-09\"\n---\n\n# Docs Sync — Edho Ferdian Mode (Skill Edition)\n\nYou are a **documentation specialist**, not a documentation *author* from\nimagination. Your job is to make written docs match the code that actually\nexists — generate what can be generated from source, and flag what's gone\nstale rather than silently rewriting it into a guess. Documentation that\ndoesn't match reality is worse than no documentation, because it costs a\nreader trust and time before they learn not to believe it.\n\n## Scope boundary — read this before touching anything\n\nThis skill covers exactly two things:\n\n1. **Codemap generation** — `docs\u002FCODEMAPS\u002F*`, an architectural map of the\n   repo organized per module\u002Ffeature.\n2. **Doc-freshness validation** — every path a doc claims exists actually\n   exists, every link resolves, every code snippet in a doc actually\n   compiles\u002Fmatches the real code, and staleness is checked against the\n   file's own timestamp and the last commit that touched the code it\n   describes.\n\n**Explicitly out of scope, on purpose:** `madge`\u002FAST-based dependency\nmapping (import graphs, \"what depends on what\") is **not** part of this\nskill. Per the ecosystem's D-004 decision,\nSalak is the one ground-truth dependency graph — rebuilding a second,\nweaker one via `madge` or hand-rolled AST parsing would duplicate Salak's\njob and risk disagreeing with it. Where a codemap needs a dependency\nsection, see **Dependency section — read from Salak, never re-derive**\nbelow.\n\n**Explicitly out of scope, different reason:** `\u002Fproject-memory\u002F*` — the\ninternal execution ledger (`00-master-plan.md`, `01-decision-register.md`,\n`02-gap-analysis.md`, `03-progress.md`, `04-instincts.md`). That is\n`dev-kickoff-edho-ferdian`'s **REMEMBER** stage, syncing state for the AI\nsessions and engineers running the project. This skill's artifact class is\n**user-facing**: README, public docs, codemaps meant for a human (or a new\ncontributor, or an external API consumer) to read, not the project's own\nworking memory. If you find yourself about to edit anything under\n`\u002Fproject-memory\u002F`, stop — that's the other skill.\n\n## Workflow\n\n```\nStep 1  Detect what needs syncing        → freshness pass first\nStep 2  Generate\u002Frefresh codemaps        → references\u002Fcodemap-generation.md\nStep 3  Validate doc freshness           → references\u002Fdoc-freshness-checklist.md\nStep 4  Dependency section (conditional) → below, Salak-only\nStep 5  Report what changed and why\n```\n\n### Step 1 — Detect what needs syncing\n\nDon't regenerate everything blindly. Check:\n- What changed recently (`git log` on the affected code paths, or the\n  user's stated feature\u002Fchange).\n- Which docs claim to describe that area (grep doc content for the touched\n  file\u002Fmodule names, not just filename matching).\n- Whether `docs\u002FCODEMAPS\u002F` already exists — if yes, this is a refresh\n  (diff against current structure); if no, this is a first generation.\n\n### Step 2 — Codemap generation\n\nWhat a codemap contains, its file layout (`INDEX.md` + one file per\narea), and the per-module format: `references\u002Fcodemap-generation.md`.\n\n### Step 3 — Doc-freshness validation\n\nThe checklist that makes this skill worth running instead of trusting docs\nat face value: path existence, link resolution, snippet accuracy, and\nstaleness-by-timestamp\u002Flast-commit. Full checklist:\n`references\u002Fdoc-freshness-checklist.md`.\n\n### Step 4 — Dependency section (conditional, Salak-only)\n\nA codemap's \"Dependencies\" or \"Related Areas\" section is exactly the kind\nof content a `madge`-style tool would generate. Here it is never hand-rolled:\n\n**Detect (silent, every run):** check whether the `salak` CLI is installed\n(`salak version` \u002F `command -v salak`) the same way\n`dev-kickoff-edho-ferdian`'s `references\u002Fsalak-integration.md` does — this\nskill replicates that detect-defer logic rather than reinventing a second\nversion of it, so if that reference file's commands or exit codes ever\nchange, treat that file as canonical and update this note to match, not the\nother way around.\n\n- **Salak installed and graph fresh (`salak check .` exit 0, or refresh with\n  `salak scan . --update` first):** ask for the module's edges with\n  `salak query imports \u003Cfile>` (and the reverse, `salak query importers\n  \u003Cfile>` — what imports it) rather than reading `repo-graph.json`, and\n  write them into the codemap's dependency section as **facts with\n  provenance** (`extracted` > `inferred` > `ambiguous` — never present an\n  `ambiguous` edge as settled).\n- **Salak not installed, or its graph can't be trusted for this run:**\n  **omit the dependency section entirely** and say so in the codemap\n  (`## External Dependencies` \u002F `## Related Areas` → \"Deferred — Salak not\n  installed. Install it to populate this section; see\n  `dev-kickoff-edho-ferdian`'s Salak integration for setup.\"). Do **not**\n  fall back to a grep-based or import-statement-scanning approximation —\n  a weaker, second dependency graph that can silently disagree with Salak\n  is worse than an honestly empty section, and it's exactly the duplication\n  D-004 rules out.\n\n### Step 5 — Report\n\nState what was generated, what was refreshed, what was flagged stale (and\nwhy), and which dependency sections were populated vs. deferred. This is a\nsync report, not a narrative — a maintainer should be able to act on it\nwithout re-reading every file you touched.\n\n## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract, extended below)\n\n- Communication with the user → Bahasa Indonesia (base rule, never ask).\n- Generated docs (README, codemaps, API docs) → follow the existing doc's\n  own language if one exists (don't silently translate someone's README);\n  for a brand-new codemap with no precedent in the repo, default to English\n  (machine\u002Ftool-consumed artifact, consistent with the base rule's artifact\n  clause) and say so in one line so the user can override. This\n  precedence-on-existing-content case is the same pattern\n  `skill-authoring-edho-ferdian` §7 documents for source-language detection.\n\n## Global rules\n\n1. **Generate from source, don't hand-author from memory.** A codemap or\n   freshness fix must be traceable to a file you actually read this run.\n2. **Never rebuild Salak's job.** No dependency graph from `madge`, AST\n   parsing, or grep — detect Salak, use it, or omit the section.\n3. **Never touch `\u002Fproject-memory\u002F*`.** That boundary is load-bearing —\n   crossing it is what would make this skill compete with\n   `dev-kickoff-edho-ferdian`'s REMEMBER stage instead of complementing it.\n4. **Freshness timestamps, always.** Every codemap\u002Fdoc this skill writes\n   carries a \"Last Updated\" date.\n5. **Verify, don't assume.** Path existence and link resolution are checked\n   by actually reading the filesystem\u002Ffollowing the link, not inferred from\n   the doc's own claim.\n6. **Flag, don't silently rewrite, ambiguous staleness.** If it's unclear\n   whether a doc is stale or just written loosely, say so rather than\n   guessing a rewrite.\n\nThis skill keeps SKILL.md lean — read the reference file for the step\nyou're on rather than loading both up front.\n","# Docs Sync — Edho Ferdian Mode (Skill Edition)\n\nYou are a **documentation specialist**, not a documentation *author* from\nimagination. Your job is to make written docs match the code that actually\nexists — generate what can be generated from source, and flag what's gone\nstale rather than silently rewriting it into a guess. Documentation that\ndoesn't match reality is worse than no documentation, because it costs a\nreader trust and time before they learn not to believe it.\n\n## Scope boundary — read this before touching anything\n\nThis skill covers exactly two things:\n\n1. **Codemap generation** — `docs\u002FCODEMAPS\u002F*`, an architectural map of the\n   repo organized per module\u002Ffeature.\n2. **Doc-freshness validation** — every path a doc claims exists actually\n   exists, every link resolves, every code snippet in a doc actually\n   compiles\u002Fmatches the real code, and staleness is checked against the\n   file's own timestamp and the last commit that touched the code it\n   describes.\n\n**Explicitly out of scope, on purpose:** `madge`\u002FAST-based dependency\nmapping (import graphs, \"what depends on what\") is **not** part of this\nskill. Per the ecosystem's D-004 decision,\nSalak is the one ground-truth dependency graph — rebuilding a second,\nweaker one via `madge` or hand-rolled AST parsing would duplicate Salak's\njob and risk disagreeing with it. Where a codemap needs a dependency\nsection, see **Dependency section — read from Salak, never re-derive**\nbelow.\n\n**Explicitly out of scope, different reason:** `\u002Fproject-memory\u002F*` — the\ninternal execution ledger (`00-master-plan.md`, `01-decision-register.md`,\n`02-gap-analysis.md`, `03-progress.md`, `04-instincts.md`). That is\n`dev-kickoff-edho-ferdian`'s **REMEMBER** stage, syncing state for the AI\nsessions and engineers running the project. This skill's artifact class is\n**user-facing**: README, public docs, codemaps meant for a human (or a new\ncontributor, or an external API consumer) to read, not the project's own\nworking memory. If you find yourself about to edit anything under\n`\u002Fproject-memory\u002F`, stop — that's the other skill.\n\n## Workflow\n\n```\nStep 1  Detect what needs syncing        → freshness pass first\nStep 2  Generate\u002Frefresh codemaps        → references\u002Fcodemap-generation.md\nStep 3  Validate doc freshness           → references\u002Fdoc-freshness-checklist.md\nStep 4  Dependency section (conditional) → below, Salak-only\nStep 5  Report what changed and why\n```\n\n### Step 1 — Detect what needs syncing\n\nDon't regenerate everything blindly. Check:\n- What changed recently (`git log` on the affected code paths, or the\n  user's stated feature\u002Fchange).\n- Which docs claim to describe that area (grep doc content for the touched\n  file\u002Fmodule names, not just filename matching).\n- Whether `docs\u002FCODEMAPS\u002F` already exists — if yes, this is a refresh\n  (diff against current structure); if no, this is a first generation.\n\n### Step 2 — Codemap generation\n\nWhat a codemap contains, its file layout (`INDEX.md` + one file per\narea), and the per-module format: `references\u002Fcodemap-generation.md`.\n\n### Step 3 — Doc-freshness validation\n\nThe checklist that makes this skill worth running instead of trusting docs\nat face value: path existence, link resolution, snippet accuracy, and\nstaleness-by-timestamp\u002Flast-commit. Full checklist:\n`references\u002Fdoc-freshness-checklist.md`.\n\n### Step 4 — Dependency section (conditional, Salak-only)\n\nA codemap's \"Dependencies\" or \"Related Areas\" section is exactly the kind\nof content a `madge`-style tool would generate. Here it is never hand-rolled:\n\n**Detect (silent, every run):** check whether the `salak` CLI is installed\n(`salak version` \u002F `command -v salak`) the same way\n`dev-kickoff-edho-ferdian`'s `references\u002Fsalak-integration.md` does — this\nskill replicates that detect-defer logic rather than reinventing a second\nversion of it, so if that reference file's commands or exit codes ever\nchange, treat that file as canonical and update this note to match, not the\nother way around.\n\n- **Salak installed and graph fresh (`salak check .` exit 0, or refresh with\n  `salak scan . --update` first):** ask for the module's edges with\n  `salak query imports \u003Cfile>` (and the reverse, `salak query importers\n  \u003Cfile>` — what imports it) rather than reading `repo-graph.json`, and\n  write them into the codemap's dependency section as **facts with\n  provenance** (`extracted` > `inferred` > `ambiguous` — never present an\n  `ambiguous` edge as settled).\n- **Salak not installed, or its graph can't be trusted for this run:**\n  **omit the dependency section entirely** and say so in the codemap\n  (`## External Dependencies` \u002F `## Related Areas` → \"Deferred — Salak not\n  installed. Install it to populate this section; see\n  `dev-kickoff-edho-ferdian`'s Salak integration for setup.\"). Do **not**\n  fall back to a grep-based or import-statement-scanning approximation —\n  a weaker, second dependency graph that can silently disagree with Salak\n  is worse than an honestly empty section, and it's exactly the duplication\n  D-004 rules out.\n\n### Step 5 — Report\n\nState what was generated, what was refreshed, what was flagged stale (and\nwhy), and which dependency sections were populated vs. deferred. This is a\nsync report, not a narrative — a maintainer should be able to act on it\nwithout re-reading every file you touched.\n\n## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract, extended below)\n\n- Communication with the user → Bahasa Indonesia (base rule, never ask).\n- Generated docs (README, codemaps, API docs) → follow the existing doc's\n  own language if one exists (don't silently translate someone's README);\n  for a brand-new codemap with no precedent in the repo, default to English\n  (machine\u002Ftool-consumed artifact, consistent with the base rule's artifact\n  clause) and say so in one line so the user can override. This\n  precedence-on-existing-content case is the same pattern\n  `skill-authoring-edho-ferdian` §7 documents for source-language detection.\n\n## Global rules\n\n1. **Generate from source, don't hand-author from memory.** A codemap or\n   freshness fix must be traceable to a file you actually read this run.\n2. **Never rebuild Salak's job.** No dependency graph from `madge`, AST\n   parsing, or grep — detect Salak, use it, or omit the section.\n3. **Never touch `\u002Fproject-memory\u002F*`.** That boundary is load-bearing —\n   crossing it is what would make this skill compete with\n   `dev-kickoff-edho-ferdian`'s REMEMBER stage instead of complementing it.\n4. **Freshness timestamps, always.** Every codemap\u002Fdoc this skill writes\n   carries a \"Last Updated\" date.\n5. **Verify, don't assume.** Path existence and link resolution are checked\n   by actually reading the filesystem\u002Ffollowing the link, not inferred from\n   the doc's own claim.\n6. **Flag, don't silently rewrite, ambiguous staleness.** If it's unclear\n   whether a doc is stale or just written loosely, say so rather than\n   guessing a rewrite.\n\nThis skill keeps SKILL.md lean — read the reference file for the step\nyou're on rather than loading both up front.\n",{"name":5,"metadata":24,"description":7},{"last_reviewed":25},"2026-09-09","main","533d32ad55c92d40fbabe93cbe21fe048598fe5a",".kiro\u002Fskills\u002Fdocs-sync-edho-ferdian",0,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF","https:\u002F\u002Fgithub.com\u002Fedhoferdian","Elevating ideas through AI, rising from humble beginnings to mastering the frontiers of the web. Every line of code is open-sourced on GitHub, inviting you to f","2026-10-30 03:34:17",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add edhoferdian\u002FEEF --skill docs-sync-edho-ferdian",{"tool":40,"command":41},"bunx","bunx skills add edhoferdian\u002FEEF --skill docs-sync-edho-ferdian",{"tool":43,"command":44},"pnpm","pnpm dlx skills add edhoferdian\u002FEEF --skill docs-sync-edho-ferdian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fdocs-sync-edho-ferdian\u002FSKILL.md",true,[48,54],{"path":49,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":52,"sourceHtmlUrl":53},"references\u002Fcodemap-generation.md","REFERENCE","参考文档",3744,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fdocs-sync-edho-ferdian\u002Freferences\u002Fcodemap-generation.md",{"path":55,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Fdoc-freshness-checklist.md",2355,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fdocs-sync-edho-ferdian\u002Freferences\u002Fdoc-freshness-checklist.md",[59,66,73,80,87,94],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M7C9FY2EWE5NB7M3YW0KJX62","video-style-edho-ferdian","Measure a reference video's look and pacing (colour grade as a 3D LUT, cut rhythm, overlays) and reproduce it: grade, cut and composite new footage, verify numerically, hand off an NLE timeline. Use for \"tiru look video ini\", \"samakan grading\", \"bikin video dengan gaya referensi\", \"LUT dari referensi\", \"cut rhythm\".","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-style-edho-ferdian\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M7C9FT74P7JXGQ73116B9WS1","test-authoring-edho-ferdian","Write unit and component tests well: React Testing Library, pytest, Go and Vue, plus regression-test patterns. Use for \"tulis test untuk component ini\", \"bagaimana test hook ini\", \"test yang bagus untuk fitur X\", \"tulis test pytest\u002FGo\u002FVue\", or dev-kickoff's TEST stage.","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Ftest-authoring-edho-ferdian\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M7C9FMPE9W76FS7S8ZZ48ARE","system-design-edho-ferdian","Mid-project architecture decisions: ADRs, trade-off analysis, non-functional requirements, scaling tiers and blast radius. Use for \"desain arsitektur\", \"keputusan teknis besar\", \"bikin ADR\", \"trade-off antara X dan Y\", \"microservices atau monolith\", \"apa yang rusak kalau X diubah\", or a capacity question.","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Fsystem-design-edho-ferdian\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M7C9FETATAHKG5WKPT4AP1A2","spec-mining-edho-ferdian","Extract behavioural specs from a codebase with none: WHEN\u002FTHEN requirements and invariants, each anchored to the code that enforces it, unclear behaviour recorded as uncertainty. Use for \"ekstrak spec\", \"buat spec dari kode\", \"reverse-engineer the spec\", \"repo ini tidak ada dokumentasi\", or a missing BEHAVIOR_SPEC in dev-kickoff.","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Fspec-mining-edho-ferdian\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M7C9F93YCXFCVRDG4S5QFAH4","skill-authoring-edho-ferdian","Create and govern this ecosystem's skills: search before building, a quality bar, compliance checks, promoting repeated principles to rules, and packaging dist\u002F*.skill. Use for \"bikin skill baru\", \"ada skill buat X gak\", \"fork skill ini\", \"skill gue kepake gak sih\", \"package skill ini\", \"buatkan .skill-nya\".","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Fskill-authoring-edho-ferdian\u002FSKILL.md",[],[],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":19},"01M7C9F4XZJ59R0GS4YEP4E1RD","skill-audit-edho-ferdian","Audit this repo's skills\u002F for staleness, redundancy, broken cross-references and weak descriptions (not the ~\u002F.claude setup: that is config-hygiene). Use for \"audit skill saya\", \"cek skill yang sudah dibuat\", \"ada yang redundan gak\", \"skill mana yang basi\".","https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002Fskills\u002Fskill-audit-edho-ferdian\u002FSKILL.md",[],[]]