{"id":"98416882-0674-44a3-862c-7763dd1be083","shortId":"kNnkNA","kind":"skill","title":"ai-development-guide","tagline":"Technical decision criteria, anti-pattern detection, debugging techniques, and quality check workflow. Use when making technical decisions, detecting code smells, or performing quality assurance.","description":"# AI Developer Guide - Technical Decision Criteria and Anti-pattern Collection\n\n## Technical Anti-patterns (Red Flag Patterns)\n\nImmediately stop and reconsider design when detecting the following patterns:\n\n### Code Quality Anti-patterns\n1. **Writing similar code 3 or more times** - Violates Rule of Three\n2. **Multiple responsibilities mixed in a single file** - Violates Single Responsibility Principle (SRP)\n3. **Defining same content in multiple files** - Violates DRY principle\n4. **Making changes without checking dependencies** - Potential for unexpected impacts\n5. **Disabling code with comments** - Should use version control\n6. **Error suppression** - Hiding problems creates technical debt\n7. **Bypassing safety mechanisms (type systems, validation, contracts)** - Circumventing language's correctness guarantees\n\n### Design Anti-patterns\n- **\"Make it work for now\" thinking** - Accumulation of technical debt\n- **Patchwork implementation** - Unplanned additions to existing code\n- **Optimistic implementation of uncertain technology** - Designing unknown elements assuming \"it'll probably work\"\n- **Symptomatic fixes** - Surface-level fixes that don't solve root causes\n- **Unplanned large-scale changes** - Lack of incremental approach\n\n## Fail-Fast Fallback Design Principles\n\n### Core Principle\nMake all errors visible and traceable with full context. Prioritize primary code reliability over fallback implementations. Excessive fallback mechanisms mask errors and make debugging difficult.\n\n### Implementation Guidelines\n\n#### Default Approach\n- **Propagate all errors explicitly** unless a Design Doc specifies a fallback\n- **Make failures explicit**: Errors should be visible and traceable\n- **Preserve error context**: Include original error information when re-throwing\n\n#### When Fallbacks Are Acceptable\n- **Only with explicit Design Doc approval**: Document why fallback is necessary\n- **Business-critical continuity**: When partial functionality is better than none\n- **Graceful degradation paths**: Clearly defined degraded service levels\n\n#### Layer Responsibilities\n- **Infrastructure Layer**:\n  - Always throw errors upward\n  - No business logic decisions\n  - Provide detailed error context\n\n- **Application Layer**:\n  - Make business-driven error handling decisions\n  - Implement fallbacks only when specified in requirements\n  - Log all fallback activations for monitoring\n\n### Error Masking Detection\n\n**Review Triggers** (require design review):\n- Writing 3rd error handler in the same feature\n- Multiple error handling blocks in single function/method\n- Nested error handling structures\n- Error handlers that return default values without logging\n\n**Before Implementing Any Fallback**:\n1. Verify Design Doc explicitly defines this fallback\n2. Document the business justification\n3. Ensure error is logged with full context\n4. Add monitoring/alerting for fallback activation\n\n### Implementation Pattern\n\n```\nAVOID: Silent fallback that hides errors\n    <handle error>:\n        return DEFAULT_VALUE  // Error hidden, debugging impossible\n\nPREFERRED: Explicit failure with context\n    <handle error>:\n        log_error('Operation failed', context, error)\n        <propagate error>  // Re-throw exception, return Error, return error tuple\n```\n\n**Adaptation**: Use language-appropriate error handling (exceptions, Result types, error tuples, etc.)\n\n## Rule of Three - Criteria for Code Duplication\n\nHow to handle duplicate code based on Martin Fowler's \"Refactoring\":\n\n| Duplication Count | Action | Reason |\n|-------------------|--------|--------|\n| 1st time | Inline implementation | Cannot predict future changes |\n| 2nd time | Consider future consolidation | Pattern beginning to emerge |\n| 3rd time | Implement commonalization | Pattern established |\n\n### Criteria for Commonalization\n\n**Cases for Commonalization**\n- Business logic duplication\n- Complex processing algorithms\n- Areas likely requiring bulk changes\n- Validation rules\n\n**Cases to Avoid Commonalization**\n- Accidental matches (coincidentally same code)\n- Possibility of evolving in different directions\n- Significant readability decrease from commonalization\n- Simple helpers in test code\n\n### Implementation Example\n\n```\n// Immediate commonalization on 1st duplication\nvalidateUserEmail(email) { /* ... */ }\nvalidateContactEmail(email) { /* ... */ }\n\n// Commonalize on 3rd occurrence with context parameter\nvalidateEmail(email, context) { /* ... */ }\n// context: 'user' | 'contact' | 'admin'\n```\n\n**Adaptation**: Use appropriate abstraction for your codebase (functions, classes, modules, configuration)\n\n## Common Failure Patterns and Avoidance Methods\n\n### Pattern 1: Error Fix Chain\n**Symptom**: Fixing one error causes new errors\n**Cause**: Surface-level fixes without understanding root cause\n**Avoidance**: Identify root cause with 5 Whys before fixing\n\n### Pattern 2: Circumventing Correctness Guarantees\n**Symptom**: Bypassing safety mechanisms (type systems, validation, contracts)\n**Cause**: Impulse to avoid correctness errors\n**Avoidance**: Use language-appropriate safety mechanisms (static checking, runtime validation, contracts, assertions)\n\n### Pattern 3: Implementation Without Sufficient Testing\n**Symptom**: Many bugs after implementation\n**Cause**: Ignoring Red-Green-Refactor process\n**Avoidance**: Always start with failing tests\n\n### Pattern 4: Ignoring Technical Uncertainty\n**Symptom**: Frequent unexpected errors when introducing new technology\n**Cause**: Assuming \"it should work according to official documentation\" without prior investigation\n**Avoidance**:\n- Record certainty evaluation at the beginning of task files\n  ```\n  Certainty: low (Reason: no working examples found for this integration)\n  Exploratory implementation: true\n  Fallback: use established alternative approach\n  ```\n- For low certainty cases, create minimal verification code first\n\n### Pattern 5: Insufficient Existing Code Investigation\n**Symptom**: Duplicate implementations, architecture inconsistency, integration failures, adopting outdated patterns\n**Cause**: Insufficient understanding of existing code before implementation; referencing only nearby files without verifying representativeness\n**Avoidance Methods**:\n- Before implementation, always search for similar functionality (using domain, responsibility, configuration patterns as keywords)\n- Similar functionality found → Use that implementation (do not create new implementation)\n- Similar functionality is technical debt → Create ADR improvement proposal before implementation\n- No similar functionality exists → Implement new functionality following existing design philosophy\n- Record all decisions and rationale in \"Existing Codebase Analysis\" section of Design Doc\n- **Reference representativeness check**: When adopting a pattern or dependency from nearby code, verify it is representative across the repository before adopting — nearby files alone are an insufficient basis\n\n## Debugging Techniques\n\n### 1. Error Analysis Procedure\n1. Read error message (first line) accurately\n2. Focus on first and last of stack trace\n3. Identify first line where your code appears\n\n### 2. 5 Whys - Root Cause Analysis\n```\nExample:\nSymptom: Build error\nWhy1: Contract definitions don't match → Why2: Interface was updated\nWhy3: Dependency change → Why4: Package update impact\nWhy5: Major version upgrade with breaking changes\nRoot cause: Inappropriate version specification in dependency manifest\n```\n\n### 3. Minimal Reproduction Code\nTo isolate problems, attempt reproduction with minimal code:\n- Remove unrelated parts\n- Replace external dependencies with mocks\n- Create minimal configuration that reproduces problem\n\n### 4. Debug Log Output\n```\nPattern: Structured logging with context\n{\n  context: 'operation-name',\n  input: { relevant, input, data },\n  state: currentState,\n  timestamp: current_time_ISO8601\n}\n\nKey elements:\n- Operation context (what is being executed)\n- Input data (what was received)\n- Current state (relevant state variables)\n- Timestamp (for correlation)\n```\n\n## Quality Assurance Mechanism Awareness\n\nBefore executing quality checks, identify what quality mechanisms exist for the change area:\n- Primary detection: inspect the change area's file types, project manifest, and configuration to identify applicable quality tools\n  - Check CI pipeline definitions for checks that cover the affected paths\n  - Check for domain-specific linter or validator configurations (e.g., schema validators, API spec validators, configuration file linters)\n  - Check for domain-specific constraints in project configuration (naming rules, length limits, format requirements)\n- Supplementary hint: IF task file specifies Quality Assurance Mechanisms → use them as additional hints for which domain-specific checks to look for\n- Include discovered domain-specific checks alongside standard quality phases below\n\n## Quality Check Workflow\n\nUniversal quality assurance phases applicable to all languages:\n\n### Phase 1: Static Analysis\n1. **Code Style Checking**: Verify adherence to style guidelines\n2. **Code Formatting**: Ensure consistent formatting\n3. **Unused Code Detection**: Identify dead code and unused imports/variables\n4. **Static Type Checking**: Verify type correctness (for statically typed languages)\n5. **Static Analysis**: Detect potential bugs, security issues, code smells\n\n### Phase 2: Build Verification\n1. **Compilation/Build**: Verify code builds successfully (for compiled languages)\n2. **Dependency Resolution**: Ensure all dependencies are available and compatible\n3. **Resource Validation**: Check configuration files, assets are valid\n\n### Phase 3: Testing\n1. **Unit Tests**: Run all unit tests\n2. **Integration Tests**: Run integration tests\n3. **Test Coverage**: Measure and verify coverage meets standards\n4. **E2E Tests**: Run end-to-end tests\n\n### Phase 4: Final Quality Gate\nAll checks must pass before proceeding:\n- Zero static analysis errors\n- Build succeeds\n- All tests pass\n- Coverage meets project-configured threshold\n\n### Quality Check Pattern (Language-Agnostic)\n```\nWorkflow:\n1. Format check → 2. Lint/Style → 3. Static analysis →\n4. Build/Compile → 5. Unit tests → 6. Coverage check →\n7. Integration tests → 8. Final gate\n\nAuto-fix capabilities (when available):\n- Format auto-fix\n- Lint auto-fix\n- Dependency/import organization\n- Simple code smell corrections\n```\n\n## Situations Requiring Technical Decisions\n\n### Timing of Abstraction\n- Extract patterns after writing concrete implementation 3 times\n- Be conscious of YAGNI, implement only currently needed features\n- Prioritize current simplicity over future extensibility\n\n### Performance vs Readability\n- Prioritize readability unless profiling identifies a measurable bottleneck (e.g., response time exceeding SLA, memory exceeding allocation)\n- Measure before optimizing\n- Document reason with comments when optimizing\n\n### Granularity of Contracts and Interfaces\n- Overly detailed contracts reduce maintainability\n- Design interfaces where each method maps to a single domain operation and parameter types use domain vocabulary\n- Use abstraction mechanisms to reduce duplication\n\n## Implementation Completeness Assurance\n\n### Impact Analysis: Mandatory 3-Stage Process\n\nComplete these stages sequentially before any implementation:\n\n**1. Discovery** - Identify all affected code:\n- Implementation references (imports, calls, instantiations)\n- Interface dependencies (contracts, types, data structures)\n- Test coverage\n- Configuration (build configs, env settings, feature flags)\n- Documentation (comments, docs, diagrams)\n\n**2. Understanding** - Analyze each discovered location:\n- Role and purpose in the system\n- Dependency direction (consumer or provider)\n- Data flow (origin → transformations → destination)\n- Coupling strength\n\n**3. Identification** - Produce structured report:\n```\n## Impact Analysis\n### Direct Impact\n- [Unit]: [Reason and modification needed]\n\n### Indirect Impact\n- [System]: [Integration path → reason]\n\n### Data Flow\n[Source] → [Transformation] → [Consumer]\n\n### Risk Assessment\n- High: [Complex dependencies, fragile areas]\n- Medium: [Moderate coupling, test gaps]\n- Low: [Isolated, well-tested areas]\n\n### Implementation Order\n1. [Start with lowest risk or deepest dependency]\n2. [...]\n```\n\n**Critical**: Do not implement until all 3 stages are documented\n\n### Unused Code Deletion\n\nWhen unused code is detected:\n- Will it be used in this work? Yes → Implement now | No → Delete now (Git preserves)\n- Applies to: Code, tests, docs, configs, assets\n\n### Existing Code Modification\n\n```\nIn use? No → Delete\n       Yes → Working? No → Delete + Reimplement\n                     Yes → Fix/Extend\n```\n\n**Principle**: Prefer clean implementation over patching broken code","tags":["development","guide","claude","code","workflows","shinpr","agent-skills","agentic-ai","ai-agents","automation","claude-code","claude-code-plugin"],"capabilities":["skill","source-shinpr","skill-ai-development-guide","topic-agent-skills","topic-agentic-ai","topic-ai-agents","topic-automation","topic-claude-code","topic-claude-code-plugin","topic-code-quality","topic-developer-tools","topic-development-workflow","topic-llm-orchestration","topic-productivity","topic-prompt-engineering"],"categories":["claude-code-workflows"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/shinpr/claude-code-workflows/ai-development-guide","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add shinpr/claude-code-workflows","source_repo":"https://github.com/shinpr/claude-code-workflows","install_from":"skills.sh"}},"qualityScore":"0.613","qualityRationale":"deterministic score 0.61 from registry signals: · indexed on github topic:agent-skills · 327 github stars · SKILL.md body (12,767 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:51.428Z","embedding":null,"createdAt":"2026-04-18T22:03:00.668Z","updatedAt":"2026-05-02T18:53:51.428Z","lastSeenAt":"2026-05-02T18:53:51.428Z","tsv":"'1':63,372,579,849,853,1114,1117,1167,1198,1262,1411,1510 '1st':469,541 '2':75,380,609,860,877,1126,1164,1176,1205,1265,1441,1518 '2nd':477 '3':67,88,385,641,869,919,1132,1186,1196,1211,1267,1317,1401,1465,1525 '3rd':342,486,549 '4':98,393,665,945,1142,1220,1230,1270 '5':108,604,727,878,1153,1272 '6':117,1275 '7':125,1278 '8':1281 'abstract':564,1310,1390 'accept':264 'accident':515 'accord':682 'accumul':148 'accur':859 'across':835 'action':467 'activ':330,398 'adapt':434,561 'add':394 'addit':155,1080 'adher':1122 'admin':560 'adopt':739,823,839 'adr':790 'affect':1033,1415 'agnost':1260 'ai':2,30 'ai-development-guid':1 'algorithm':503 'alloc':1352 'alon':842 'alongsid':1097 'altern':715 'alway':299,659,761 'analysi':814,851,882,1116,1155,1242,1269,1399,1471 'analyz':1443 'anti':9,38,43,61,140 'anti-pattern':8,37,42,60,139 'api':1047 'appear':876 'appli':1552 'applic':311,1021,1109 'approach':192,229,716 'appropri':438,563,631 'approv':270 'architectur':735 'area':504,1005,1011,1496,1507 'assert':639 'assess':1491 'asset':1192,1558 'assum':167,678 'assur':29,990,1075,1107,1397 'attempt':926 'auto':1285,1292,1296 'auto-fix':1284,1291,1295 'avail':1183,1289 'avoid':401,513,576,599,624,627,658,689,757 'awar':992 'base':459 'basi':846 'begin':483,695 'better':284 'block':352 'bottleneck':1344 'break':909 'broken':1579 'bug':648,1158 'build':885,1165,1171,1244,1431 'build/compile':1271 'bulk':507 'busi':277,304,315,383,498 'business-crit':276 'business-driven':314 'bypass':126,614 'call':1420 'cannot':473 'capabl':1287 'case':495,511,720 'caus':183,587,590,598,602,621,651,677,742,881,912 'certainti':691,699,719 'chain':582 'chang':100,188,476,508,899,910,1004,1010 'check':16,102,635,821,996,1024,1029,1035,1053,1087,1096,1103,1120,1145,1189,1235,1256,1264,1277 'ci':1025 'circumv':133,610 'class':569 'clean':1575 'clear':290 'code':24,58,66,110,158,212,452,458,519,535,724,730,747,830,875,922,930,1118,1127,1134,1138,1161,1170,1301,1416,1530,1534,1554,1560,1580 'codebas':567,813 'coincident':517 'collect':40 'comment':112,1359,1438 'common':489,494,497,514,530,539,547,572 'compat':1185 'compil':1174 'compilation/build':1168 'complet':1396,1404 'complex':501,1493 'concret':1315 'config':1432,1557 'configur':571,769,941,1018,1043,1050,1061,1190,1253,1430 'conscious':1320 'consid':479 'consist':1130 'consolid':481 'constraint':1058 'consum':1455,1489 'contact':559 'content':91 'context':209,252,310,392,418,423,552,556,557,953,954,971 'continu':279 'contract':132,620,638,888,1364,1369,1424 'control':116 'core':199 'correct':136,611,625,1148,1303 'correl':988 'count':466 'coupl':1463,1499 'cover':1031 'coverag':1213,1217,1249,1276,1429 'creat':122,721,781,789,939 'criteria':7,35,450,492 'critic':278,1519 'current':965,981,1325,1329 'currentst':963 'data':961,977,1426,1458,1485 'dead':1137 'debt':124,151,788 'debug':12,224,412,847,946 'decis':6,22,34,306,319,808,1307 'decreas':528 'deepest':1516 'default':228,364,408 'defin':89,291,377 'definit':889,1027 'degrad':288,292 'delet':1531,1548,1565,1569 'depend':103,827,898,917,936,1177,1181,1423,1453,1494,1517 'dependency/import':1298 'design':52,138,164,197,236,268,339,374,804,817,1372 'destin':1462 'detail':308,1368 'detect':11,23,54,335,1007,1135,1156,1536 'develop':3,31 'diagram':1440 'differ':524 'difficult':225 'direct':525,1454,1472 'disabl':109 'discov':1092,1445 'discoveri':1412 'doc':237,269,375,818,1439,1556 'document':271,381,685,1356,1437,1528 'domain':767,1038,1056,1085,1094,1381,1387 'domain-specif':1037,1055,1084,1093 'dri':96 'driven':316 'duplic':453,457,465,500,542,733,1394 'e.g':1044,1345 'e2e':1221 'element':166,969 'email':544,546,555 'emerg':485 'end':1225,1227 'end-to-end':1224 'ensur':386,1129,1179 'env':1433 'error':118,203,221,232,244,251,255,301,309,317,333,343,350,357,360,387,406,410,420,424,430,432,439,444,580,586,589,626,672,850,855,886,1243 'establish':491,714 'etc':446 'evalu':692 'evolv':522 'exampl':537,704,883 'exceed':1348,1351 'except':428,441 'excess':217 'execut':975,994 'exist':157,729,746,798,803,812,1001,1559 'explicit':233,243,267,376,415 'exploratori':709 'extens':1333 'extern':935 'extract':1311 'fail':194,422,662 'fail-fast':193 'failur':242,416,573,738 'fallback':196,215,218,240,262,273,321,329,371,379,397,403,712 'fast':195 'featur':348,1327,1435 'file':82,94,698,753,841,1013,1051,1072,1191 'final':1231,1282 'first':725,857,863,871 'fix':173,177,581,584,594,607,1286,1293,1297 'fix/extend':1572 'flag':46,1436 'flow':1459,1486 'focus':861 'follow':56,802 'format':1066,1128,1131,1263,1290 'found':705,775 'fowler':462 'fragil':1495 'frequent':670 'full':208,391 'function':282,568,765,774,785,797,801 'function/method':355 'futur':475,480,1332 'gap':1501 'gate':1233,1283 'git':1550 'grace':287 'granular':1362 'green':655 'guarante':137,612 'guid':4,32 'guidelin':227,1125 'handl':318,351,358,440,456 'handler':344,361 'helper':532 'hidden':411 'hide':120,405 'high':1492 'hint':1069,1081 'identif':1466 'identifi':600,870,997,1020,1136,1341,1413 'ignor':652,666 'immedi':48,538 'impact':107,903,1398,1470,1473,1480 'implement':153,160,216,226,320,369,399,472,488,536,642,650,710,734,749,760,778,783,794,799,1316,1323,1395,1410,1417,1508,1522,1545,1576 'import':1419 'imports/variables':1141 'imposs':413 'improv':791 'impuls':622 'inappropri':913 'includ':253,1091 'inconsist':736 'increment':191 'indirect':1479 'inform':256 'infrastructur':297 'inlin':471 'input':958,960,976 'inspect':1008 'instanti':1421 'insuffici':728,743,845 'integr':708,737,1206,1209,1279,1482 'interfac':894,1366,1373,1422 'introduc':674 'investig':688,731 'iso8601':967 'isol':924,1503 'issu':1160 'justif':384 'key':968 'keyword':772 'lack':189 'languag':134,437,630,1112,1152,1175,1259 'language-agnost':1258 'language-appropri':436,629 'larg':186 'large-scal':185 'last':865 'layer':295,298,312 'length':1064 'level':176,294,593 'like':505 'limit':1065 'line':858,872 'lint':1294 'lint/style':1266 'linter':1040,1052 'll':169 'locat':1446 'log':327,367,389,419,947,951 'logic':305,499 'look':1089 'low':700,718,1502 'lowest':1513 'maintain':1371 'major':905 'make':20,99,142,201,223,241,313 'mandatori':1400 'mani':647 'manifest':918,1016 'map':1377 'martin':461 'mask':220,334 'match':516,892 'measur':1214,1343,1353 'mechan':128,219,616,633,991,1000,1076,1391 'medium':1497 'meet':1218,1250 'memori':1350 'messag':856 'method':577,758,1376 'minim':722,920,929,940 'mix':78 'mock':938 'moder':1498 'modif':1477,1561 'modul':570 'monitor':332 'monitoring/alerting':395 'multipl':76,93,349 'must':1236 'name':957,1062 'nearbi':752,829,840 'necessari':275 'need':1326,1478 'nest':356 'new':588,675,782,800 'none':286 'occurr':550 'offici':684 'one':585 'oper':421,956,970,1382 'operation-nam':955 'optim':1355,1361 'optimist':159 'order':1509 'organ':1299 'origin':254,1460 'outdat':740 'output':948 'over':1367 'packag':901 'paramet':553,1384 'part':933 'partial':281 'pass':1237,1248 'patch':1578 'patchwork':152 'path':289,1034,1483 'pattern':10,39,44,47,57,62,141,400,482,490,574,578,608,640,664,726,741,770,825,949,1257,1312 'perform':27,1334 'phase':1100,1108,1113,1163,1195,1229 'philosophi':805 'pipelin':1026 'possibl':520 'potenti':104,1157 'predict':474 'prefer':414,1574 'preserv':250,1551 'primari':211,1006 'principl':86,97,198,200,1573 'prior':687 'priorit':210,1328,1337 'probabl':170 'problem':121,925,944 'procedur':852 'proceed':1239 'process':502,657,1403 'produc':1467 'profil':1340 'project':1015,1060,1252 'project-configur':1251 'propag':230 'propos':792 'provid':307,1457 'purpos':1449 'qualiti':15,28,59,989,995,999,1022,1074,1099,1102,1106,1232,1255 'rational':810 're':259,426 're-throw':258,425 'read':854 'readabl':527,1336,1338 'reason':468,701,1357,1475,1484 'receiv':980 'reconsid':51 'record':690,806 'red':45,654 'red-green-refactor':653 'reduc':1370,1393 'refactor':464,656 'refer':819,1418 'referenc':750 'reimplement':1570 'relev':959,983 'reliabl':213 'remov':931 'replac':934 'report':1469 'repositori':837 'repres':756,820,834 'reproduc':943 'reproduct':921,927 'requir':326,338,506,1067,1305 'resolut':1178 'resourc':1187 'respons':77,85,296,768,1346 'result':442 'return':363,407,429,431 'review':336,340 'risk':1490,1514 'role':1447 'root':182,597,601,880,911 'rule':72,447,510,1063 'run':1201,1208,1223 'runtim':636 'safeti':127,615,632 'scale':187 'schema':1045 'search':762 'section':815 'secur':1159 'sequenti':1407 'servic':293 'set':1434 'signific':526 'silent':402 'similar':65,764,773,784,796 'simpl':531,1300 'simplic':1330 'singl':81,84,354,1380 'situat':1304 'skill' 'skill-ai-development-guide' 'sla':1349 'smell':25,1162,1302 'solv':181 'sourc':1487 'source-shinpr' 'spec':1048 'specif':915,1039,1057,1086,1095 'specifi':238,324,1073 'srp':87 'stack':867 'stage':1402,1406,1526 'standard':1098,1219 'start':660,1511 'state':962,982,984 'static':634,1115,1143,1150,1154,1241,1268 'stop':49 'strength':1464 'structur':359,950,1427,1468 'style':1119,1124 'succeed':1245 'success':1172 'suffici':644 'supplementari':1068 'suppress':119 'surfac':175,592 'surface-level':174,591 'symptom':583,613,646,669,732,884 'symptomat':172 'system':130,618,1452,1481 'task':697,1071 'technic':5,21,33,41,123,150,667,787,1306 'techniqu':13,848 'technolog':163,676 'test':534,645,663,1197,1200,1204,1207,1210,1212,1222,1228,1247,1274,1280,1428,1500,1506,1555 'think':147 'three':74,449 'threshold':1254 'throw':260,300,427 'time':70,470,478,487,966,1308,1318,1347 'timestamp':964,986 'tool':1023 'topic-agent-skills' 'topic-agentic-ai' 'topic-ai-agents' 'topic-automation' 'topic-claude-code' 'topic-claude-code-plugin' 'topic-code-quality' 'topic-developer-tools' 'topic-development-workflow' 'topic-llm-orchestration' 'topic-productivity' 'topic-prompt-engineering' 'trace':868 'traceabl':206,249 'transform':1461,1488 'trigger':337 'true':711 'tupl':433,445 'type':129,443,617,1014,1144,1147,1151,1385,1425 'uncertain':162 'uncertainti':668 'understand':596,744,1442 'unexpect':106,671 'unit':1199,1203,1273,1474 'univers':1105 'unknown':165 'unless':234,1339 'unplan':154,184 'unrel':932 'unus':1133,1140,1529,1533 'updat':896,902 'upgrad':907 'upward':302 'use':18,114,435,562,628,713,766,776,1077,1386,1389,1540,1563 'user':558 'valid':131,509,619,637,1042,1046,1049,1188,1194 'validatecontactemail':545 'validateemail':554 'validateuseremail':543 'valu':365,409 'variabl':985 'verif':723,1166 'verifi':373,755,831,1121,1146,1169,1216 'version':115,906,914 'violat':71,83,95 'visibl':204,247 'vocabulari':1388 'vs':1335 'well':1505 'well-test':1504 'why1':887 'why2':893 'why3':897 'why4':900 'why5':904 'whys':605,879 'without':101,366,595,643,686,754 'work':144,171,681,703,1543,1567 'workflow':17,1104,1261 'write':64,341,1314 'yagni':1322 'yes':1544,1566,1571 'zero':1240","prices":[{"id":"7e51c3b9-4227-4134-8b4f-8232d943e2ac","listingId":"98416882-0674-44a3-862c-7763dd1be083","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"shinpr","category":"claude-code-workflows","install_from":"skills.sh"},"createdAt":"2026-04-18T22:03:00.668Z"}],"sources":[{"listingId":"98416882-0674-44a3-862c-7763dd1be083","source":"github","sourceId":"shinpr/claude-code-workflows/ai-development-guide","sourceUrl":"https://github.com/shinpr/claude-code-workflows/tree/main/skills/ai-development-guide","isPrimary":false,"firstSeenAt":"2026-04-18T22:03:00.668Z","lastSeenAt":"2026-05-02T18:53:51.428Z"}],"details":{"listingId":"98416882-0674-44a3-862c-7763dd1be083","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"shinpr","slug":"ai-development-guide","github":{"repo":"shinpr/claude-code-workflows","stars":327,"topics":["agent-skills","agentic-ai","ai-agents","automation","claude-code","claude-code-plugin","code-quality","developer-tools","development-workflow","llm-orchestration","productivity","prompt-engineering","skills"],"license":"mit","html_url":"https://github.com/shinpr/claude-code-workflows","pushed_at":"2026-05-02T15:39:17Z","description":"Production-ready development workflows for Claude Code, powered by specialized AI agents.","skill_md_sha":"87ed2538919a30b481ad0f79cad153035f7bdd92","skill_md_path":"skills/ai-development-guide/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/shinpr/claude-code-workflows/tree/main/skills/ai-development-guide"},"layout":"multi","source":"github","category":"claude-code-workflows","frontmatter":{"name":"ai-development-guide","description":"Technical decision criteria, anti-pattern detection, debugging techniques, and quality check workflow. Use when making technical decisions, detecting code smells, or performing quality assurance."},"skills_sh_url":"https://skills.sh/shinpr/claude-code-workflows/ai-development-guide"},"updatedAt":"2026-05-02T18:53:51.428Z"}}