[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C8TGCD3X8JF0269TZVEMSW":3,"skill-same:01M7C8TGCD3X8JF0269TZVEMSW":78},{"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},"01M7C8TGCD3X8JF0269TZVEMSW","backend-engineering-edho-ferdian",null,"Write server-side code well: service layering and ports\u002Fadapters, typed errors, retry with backoff and circuit breakers, background jobs and queues, structured logging, new integrations; NestJS and Rails guides. Use for \"struktur service layer\", \"error handling di backend\", \"retry\u002Fcircuit breaker\", \"background job \u002F queue\", \"tambah integrasi baru\", \"bikin app Rails\".","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\u002Fbackend-engineering-edho-ferdian\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: backend-engineering-edho-ferdian\ndescription: >-\n  Write server-side code well: service layering and ports\u002Fadapters, typed\n  errors, retry with backoff and circuit breakers, background jobs and\n  queues, structured logging, new integrations; NestJS and Rails guides. Use\n  for \"struktur service layer\", \"error handling di backend\", \"retry\u002Fcircuit\n  breaker\", \"background job \u002F queue\", \"tambah integrasi baru\", \"bikin app\n  Rails\".\nmetadata:\n  last_reviewed: \"2026-09-24\"\n---\n\n# Backend Engineering — Edho Ferdian Mode\n\n## Where this sits\n\n- `api-design-edho-ferdian` decides the **contract** at the boundary.\n- `data-layer-patterns-edho-ferdian` decides the **storage** behind it.\n- This skill is the **middle**: how the code between them is layered, how it\n  fails, and how it defers work.\n- `code-review-edho-ferdian` reviews the result — in particular\n  `silent-failure-lens.md`, which is the review-side mirror of\n  `references\u002Ferror-and-resilience.md` here. Cross-reference, never restate.\n\n## References\n\n- `references\u002Ferror-and-resilience.md`\n- `references\u002Fllm-pipelines.md` — regex-first parsing with confidence-scoring\n  as the LLM gate, plus cost-aware model routing, budget tracking, retry\n  policy, and prompt caching for pipelines that call an LLM API.\n- `references\u002Fscheduled-collection.md` — unattended collect\u002Fenrich\u002Fstore\n  pipelines (scrapers, feed pollers, report builders): source selection,\n  per-source failure isolation, LLM-enrichment batching and fallback,\n  prompt-injection rules for untrusted scraped content, idempotent upsert,\n  and cron\u002Falerting operations. Covers the background-job concerns\n  (idempotency, dead-letter-style backfill, run scheduling) for this class of\n  job — see the note below for what it does not cover.\n- `references\u002Fnestjs.md` — NestJS project structure (`common\u002F`, `config\u002F`,\n  `modules\u002F\u003Cfitur>\u002F` with module-local DTOs), canonical bootstrap (global\n  `ValidationPipe`, `ClassSerializerInterceptor`, `HttpExceptionFilter`), env\n  validation at boot, repository\u002Ftransaction placement, and background\n  jobs\u002Fevent consumers in their own modules. Not speculative — this is the\n  framework behind `ghostfolio`, a real project in Edho's stack.\n- `references\u002Frails.md` — Rails 7.1+\u002F8.x authoring: directory contract,\n  when to extract a service\u002Fform\u002Fquery object or ViewComponent, service\n  result objects and transactions, ActiveRecord discipline (eager loading,\n  callbacks, no `default_scope`), idempotent jobs, Hotwire, and the Rails 8\n  Solid stack. Review and build-failure lenses for Ruby live in\n  `language-code-review-edho-ferdian` and `build-fix-edho-ferdian`.\n\n- `references\u002Flayering-and-boundaries.md` — ports & adapters (hexagonal\n  architecture) with a framework-agnostic dependency-direction diagram, the\n  repository-vs-service layer split with a misplaced-concern test, the\n  composition root (NestJS DI and hand-wired bootstrap variants), a six-step\n  migration playbook for entangled\u002Flegacy code, and a checklist for adding a\n  new integration cleanly through the same port\u002Fadapter seam.\n- `references\u002Fjobs-and-queues.md` — generic queue-backend reference, distinct\n  from `references\u002Fscheduled-collection.md` (which covers the\n  scheduled-collection job shape specifically): backend choice (BullMQ vs\n  SQS vs Postgres-based pg-boss\u002Fgraphile-worker), worker-pool concurrency\n  sizing, retry\u002Fbackoff classification, dead-letter queues generically, job\n  idempotency keys, and queue observability.\n\n## External docs (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nBefore using a fast-moving or rarely-touched framework\u002Fqueue\u002FORM API surface\n(new integration, version upgrade, NestJS\u002FBullMQ\u002Fpg-boss specifics), resolve\nit live via Context7 rather than from memory. Full contract:\n`skill-authoring-edho-ferdian` §9.\n\n## Surgical changes (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nThis skill inherits the default as-is: when extending or fixing an existing\nservice, error path, or job, change only what the task requires — don't\nrelayer or restructure adjacent, already-working code as a side effect. Full\ncontract: `skill-authoring-edho-ferdian` §10.\n\n## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nCommunication to the user in Bahasa Indonesia; code, comments, and any\ngenerated files in English — fixed, never ask. Full contract:\n`skill-authoring-edho-ferdian` §7.\n","# Backend Engineering — Edho Ferdian Mode\n\n## Where this sits\n\n- `api-design-edho-ferdian` decides the **contract** at the boundary.\n- `data-layer-patterns-edho-ferdian` decides the **storage** behind it.\n- This skill is the **middle**: how the code between them is layered, how it\n  fails, and how it defers work.\n- `code-review-edho-ferdian` reviews the result — in particular\n  `silent-failure-lens.md`, which is the review-side mirror of\n  `references\u002Ferror-and-resilience.md` here. Cross-reference, never restate.\n\n## References\n\n- `references\u002Ferror-and-resilience.md`\n- `references\u002Fllm-pipelines.md` — regex-first parsing with confidence-scoring\n  as the LLM gate, plus cost-aware model routing, budget tracking, retry\n  policy, and prompt caching for pipelines that call an LLM API.\n- `references\u002Fscheduled-collection.md` — unattended collect\u002Fenrich\u002Fstore\n  pipelines (scrapers, feed pollers, report builders): source selection,\n  per-source failure isolation, LLM-enrichment batching and fallback,\n  prompt-injection rules for untrusted scraped content, idempotent upsert,\n  and cron\u002Falerting operations. Covers the background-job concerns\n  (idempotency, dead-letter-style backfill, run scheduling) for this class of\n  job — see the note below for what it does not cover.\n- `references\u002Fnestjs.md` — NestJS project structure (`common\u002F`, `config\u002F`,\n  `modules\u002F\u003Cfitur>\u002F` with module-local DTOs), canonical bootstrap (global\n  `ValidationPipe`, `ClassSerializerInterceptor`, `HttpExceptionFilter`), env\n  validation at boot, repository\u002Ftransaction placement, and background\n  jobs\u002Fevent consumers in their own modules. Not speculative — this is the\n  framework behind `ghostfolio`, a real project in Edho's stack.\n- `references\u002Frails.md` — Rails 7.1+\u002F8.x authoring: directory contract,\n  when to extract a service\u002Fform\u002Fquery object or ViewComponent, service\n  result objects and transactions, ActiveRecord discipline (eager loading,\n  callbacks, no `default_scope`), idempotent jobs, Hotwire, and the Rails 8\n  Solid stack. Review and build-failure lenses for Ruby live in\n  `language-code-review-edho-ferdian` and `build-fix-edho-ferdian`.\n\n- `references\u002Flayering-and-boundaries.md` — ports & adapters (hexagonal\n  architecture) with a framework-agnostic dependency-direction diagram, the\n  repository-vs-service layer split with a misplaced-concern test, the\n  composition root (NestJS DI and hand-wired bootstrap variants), a six-step\n  migration playbook for entangled\u002Flegacy code, and a checklist for adding a\n  new integration cleanly through the same port\u002Fadapter seam.\n- `references\u002Fjobs-and-queues.md` — generic queue-backend reference, distinct\n  from `references\u002Fscheduled-collection.md` (which covers the\n  scheduled-collection job shape specifically): backend choice (BullMQ vs\n  SQS vs Postgres-based pg-boss\u002Fgraphile-worker), worker-pool concurrency\n  sizing, retry\u002Fbackoff classification, dead-letter queues generically, job\n  idempotency keys, and queue observability.\n\n## External docs (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nBefore using a fast-moving or rarely-touched framework\u002Fqueue\u002FORM API surface\n(new integration, version upgrade, NestJS\u002FBullMQ\u002Fpg-boss specifics), resolve\nit live via Context7 rather than from memory. Full contract:\n`skill-authoring-edho-ferdian` §9.\n\n## Surgical changes (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nThis skill inherits the default as-is: when extending or fixing an existing\nservice, error path, or job, change only what the task requires — don't\nrelayer or restructure adjacent, already-working code as a side effect. Full\ncontract: `skill-authoring-edho-ferdian` §10.\n\n## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)\n\nCommunication to the user in Bahasa Indonesia; code, comments, and any\ngenerated files in English — fixed, never ask. Full contract:\n`skill-authoring-edho-ferdian` §7.\n",{"name":5,"metadata":24,"description":7},{"last_reviewed":25},"2026-09-24","main","533d32ad55c92d40fbabe93cbe21fe048598fe5a",".kiro\u002Fskills\u002Fbackend-engineering-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 backend-engineering-edho-ferdian",{"tool":40,"command":41},"bunx","bunx skills add edhoferdian\u002FEEF --skill backend-engineering-edho-ferdian",{"tool":43,"command":44},"pnpm","pnpm dlx skills add edhoferdian\u002FEEF --skill backend-engineering-edho-ferdian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002FSKILL.md",true,[48,54,58,62,66,70,74],{"path":49,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":52,"sourceHtmlUrl":53},"references\u002Ferror-and-resilience.md","REFERENCE","参考文档",3470,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Ferror-and-resilience.md",{"path":55,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Fjobs-and-queues.md",12769,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Fjobs-and-queues.md",{"path":59,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Flayering-and-boundaries.md",12899,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Flayering-and-boundaries.md",{"path":63,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fllm-pipelines.md",8316,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Fllm-pipelines.md",{"path":67,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fnestjs.md",7125,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Fnestjs.md",{"path":71,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Frails.md",8159,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Frails.md",{"path":75,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fscheduled-collection.md",9655,"https:\u002F\u002Fgithub.com\u002Fedhoferdian\u002FEEF\u002Fblob\u002Fmain\u002F.kiro\u002Fskills\u002Fbackend-engineering-edho-ferdian\u002Freferences\u002Fscheduled-collection.md",[79,86,93,100,107,114],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"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":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"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":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"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":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"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":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"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":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"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",[],[]]