[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-document-service":3,"mdc--m7ngz-key":40,"related-org-aws-labs-document-service":1708,"related-repo-aws-labs-document-service":1889},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":35,"sourceUrl":38,"mdContent":39},"document-service","generate technical documentation for services","This skill should be used when the user asks to \"analyze this codebase\", \"document this service\", \"generate technical docs\", \"I inherited this code\", \"help me understand this system\", \"create docs for this project\", \"what does this system look like\", \"onboard me to this codebase\", \"this codebase has no docs\", \"visualize the architecture from code\", or any explicit request to produce structured documentation or architecture diagrams from an existing codebase. Specifically optimized for AWS workloads (CDK, CloudFormation, Terraform) with source-of-truth citations. Do NOT activate for code reviews, single-function explanations, generating new code, or general coding tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20],{"name":14,"slug":15,"type":16},"Documentation","documentation","tag",{"name":18,"slug":19,"type":16},"Technical Writing","technical-writing",{"name":21,"slug":22,"type":16},"Code Analysis","code-analysis",831,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagent-plugins","2026-07-12T08:39:44.980705","Apache-2.0",127,[29,30,31,32,33,34],"agent-plugins","agent-skills","agents","aws","coding-agent-skills","coding-agents",{"repoUrl":24,"stars":23,"forks":27,"topics":36,"description":37},[29,30,31,32,33,34],"Agent Plugins for AWS equip AI coding agents with the skills to help you architect, deploy, and operate on AWS.","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagent-plugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fcodebase-documentor-for-aws\u002Fskills\u002Fdocument-service","---\nname: document-service\ndescription: \"This skill should be used when the user asks to \\\"analyze this codebase\\\", \\\"document this service\\\", \\\"generate technical docs\\\", \\\"I inherited this code\\\", \\\"help me understand this system\\\", \\\"create docs for this project\\\", \\\"what does this system look like\\\", \\\"onboard me to this codebase\\\", \\\"this codebase has no docs\\\", \\\"visualize the architecture from code\\\", or any explicit request to produce structured documentation or architecture diagrams from an existing codebase. Specifically optimized for AWS workloads (CDK, CloudFormation, Terraform) with source-of-truth citations. Do NOT activate for code reviews, single-function explanations, generating new code, or general coding tasks.\"\nlicense: Apache-2.0\n---\n\n# Document Service\n\nAnalyze codebases to produce structured technical documentation and architecture diagrams with source-of-truth citations. Every finding links back to the exact file and line it was derived from. Optimized for AWS workloads but works with any codebase.\n\n## Core Principles\n\n- **Explain WHY, not just WHAT.** The reader inherited this codebase and has zero context. Listing components is not enough — explain why the architecture is shaped this way. Search for code comments, TODOs, and commit messages that reveal design rationale. When no rationale exists, mark it `[RATIONALE UNKNOWN]`.\n- **Trace end-to-end flows.** For every API endpoint or message handler, trace the complete request path from entry to response. Note every intermediate step, transformation, timeout, and failure point. This is the \"if it breaks at 3am, where do I look?\" analysis.\n- **Deep-dive complex logic.** Identify the most complex or domain-specific code paths (ML pipelines, business rule engines, state machines, custom algorithms). Document HOW they work at the implementation level — the algorithm, key parameters, edge cases, and where production bugs will occur. Surface-level summaries of complex code provide no value over a naive AI prompt.\n- **Surface implicit knowledge.** Look for hardcoded values, magic numbers, environment-dependent behavior, and undocumented assumptions. These are the tribal knowledge items that disappear when teams leave.\n- **Every claim must be traceable.** Include `file:line` citations for every finding. See [citation-format.md](references\u002Fcitation-format.md). Verify citations precisely — re-read the cited file and confirm the line number is within ±3 lines. Anchor with function\u002Fvariable names.\n- **Code is the source of truth.** Document what actually exists in code, not what READMEs or wikis claim. Flag every discrepancy between documentation and reality.\n- **Mark unknowns and risks explicitly.** Use `[UNKNOWN]` for items not inferable from code, `[RISK]` for unhandled failure modes, `[INFERRED]` for educated guesses, `[RATIONALE UNKNOWN]` for unexplained architecture choices. Omitting markers undermines trust.\n- **Verify quantitative claims.** List directory entries programmatically and use exact counts.\n\n## Workflow\n\nThe workflow runs autonomously from Step 2 onward. Step 1 is the only interactive step.\n\n### Step 1: Gather Context\n\nGather from the user:\n\n- Target directory or service to analyze\n- Any existing documentation, design docs, or business context (accept \"nothing\" — this skill is designed for undocumented codebases)\n\nIf existing docs are provided, read them first to establish baseline context. If the target directory and context are already known (e.g., provided via automation or a pre-configured prompt), skip the interactive step and proceed directly to Step 2.\n\nCheck whether `CODEBASE_ANALYSIS.md` already exists at the output path. If so, ask the user: \"Overwrite or write to a different filename?\" Resolve this before proceeding — the rest of the workflow runs autonomously.\n\n### Step 2: Build File Tree and Detect Project Type\n\n1. List all files recursively in the target directory\n2. Apply exclusion patterns from [exclusion-patterns.md](references\u002Fexclusion-patterns.md). Also respect `.gitignore`.\n3. Detect project type and framework from characteristic files. See [discovery-patterns.md](references\u002Fdiscovery-patterns.md).\n4. Identify entry points based on detected project type. See [discovery-patterns.md](references\u002Fdiscovery-patterns.md).\n5. Read the README, CLAUDE.md, or AGENTS.md if present — these contain project context.\n6. Check git branch names (`git branch -a`) for strategic context (e.g., a `dev\u002Frust` branch signals a language migration in progress). Note active branches in the Architecture Overview.\n\n### Step 3: Generate Documentation Outline\n\nProduce a hierarchical outline mapping each documentation section to specific source files:\n\n```markdown\n## Documentation Outline\n\n1. Architecture Overview → [entry points, IaC stack files] — explain WHY, not just WHAT\n2. [Module A: detected name] → [source files for module A]\n3. [Module B: detected name] → [source files for module B]\n4. Shared Utilities → [shared\u002Fcommon source files]\n5. Request Lifecycle → [trace end-to-end flows through the system]\n6. Domain Logic Deep-Dive → [core services at implementation level: algorithms, parameters, edge cases]\n7. Startup and Initialization → [boot sequence, model loading, cache warmup, dependency checks]\n8. API Contracts → [route definitions, OpenAPI specs]\n9. Data Models → [schema files, ORM models]\n10. Deployment → [IaC files, Dockerfiles]\n11. Configuration → [config files, .env.example, prompt templates, YAML configs, secrets refs]\n12. Monitoring and Observability → [log groups, metrics, tracing, alarms, dashboards]\n13. Security → [auth, encryption, IAM, network isolation]\n14. Local Development → [how to run\u002Ftest locally, CPU fallback, dev environment setup]\n15. Discrepancies → (cross-reference README\u002Fmetadata vs actual code)\n16. Failure Modes → (cross-cutting — include detection + recovery)\n17. Timeout and Dependency Chain → (map cascading timeouts across layers)\n```\n\nFollow the section structure in [technical-doc-template.md](references\u002Ftechnical-doc-template.md) but adapt to the actual codebase — add sections for significant modules, skip sections that don't apply. Aim for balance: each section should map to a meaningful subset of files. If a module maps to more than ~30 files, consider splitting it into sub-sections.\n\n**Do NOT pause for user review.** Proceed immediately to analysis.\n\n### Step 4: Analyze\n\nTwo core analysis paths:\n\n#### Path A: Application Code\n\nFor each outline section, read mapped source files and extract:\n\n1. API and service definitions — route handlers, controllers, gRPC services, GraphQL resolvers\n2. Data model definitions — database schemas, ORM models, type definitions\n3. Internal dependencies — imports between modules, shared utilities, event handlers\n4. External integrations — SDK clients, HTTP calls, queue producers\u002Fconsumers\n5. Configuration — environment variables, feature flags, secrets references\n\nConsult [framework-patterns.md](references\u002Fframework-patterns.md) for framework-specific extraction patterns.\n\n#### Path B: Infrastructure-as-Code\n\nWhen IaC files are detected (CDK, CloudFormation, Terraform, Serverless Framework):\n\n1. Parse resource definitions. Identify AWS resource types, relationships, and networking topology.\n2. Map infrastructure to application components that use them.\n3. Extract networking topology — VPCs, subnets, security groups.\n4. Consult MCP servers — use `awsiac` to confirm resource interpretations, `awsknowledge` for service descriptions.\n\nWhen no IaC is found, infer infrastructure from application code (SDK clients, connection strings, environment variables) and mark components as `[INFERRED]`.\n\n**Note on CDK projects:** In CDK codebases, the IaC IS application code (TypeScript\u002FPython constructs). Process CDK files in a single pass covering both Path A and Path B rather than treating them as separate analyses. Extract both the resource definitions (Path B) and the application logic interleaved with them (Lambda bundling, environment wiring, IAM grants — Path A) simultaneously.\n\n#### Writing Sections\n\nFor each outline section:\n\n1. Re-read mapped source files for exact line numbers — do not rely on memory from earlier steps.\n2. Use grep for patterns — route definitions, model declarations, error handlers.\n3. Write content with inline citations. See [citation-format.md](references\u002Fcitation-format.md).\n4. **Document every source file.** Enumerate ALL non-generated source files. Every file should appear somewhere in the documentation — in a module table, component table, or at minimum a file inventory. Files that define symbols never imported by any execution path should be flagged as `[UNUSED]` potential dead code.\n5. **Analyze the test suite.** Document what tests verify, what coverage gaps exist, and how to interpret test failures. Tests reveal expected behavior and edge cases.\n\nProcess cross-cutting sections (Failure Modes, Configuration, Security, Discrepancies) last, drawing on accumulated knowledge.\n\n**Discrepancy detection**: After analyzing the codebase, re-read the README, CLAUDE.md, package.json description, and any project metadata. Flag every claim that does not match the actual code — features referenced but not implemented, resource types that differ, architecture components that don't exist. For legacy codebases, this \"trust but verify\" pass is the single most valuable output.\n\n**Actionable failure modes**: For each failure mode, include the detection method (CloudWatch metric, log pattern, symptom) and recovery steps (actual commands), not just a description. The reader is an on-call engineer at 3am.\n\n#### Deep Analysis Approach\n\nDo not attempt a single-pass skim. For each module or service, use iterative deepening:\n\n1. **First pass** — scan file structure and entry points to understand scope\n2. **Second pass** — read core files, identify questions (what calls this? where is this configured? what happens on error?)\n3. **Third pass** — search for answers to those questions across the codebase, trace cross-module dependencies\n4. **Write** — only write the section after all three passes. Re-read cited files to verify exact line numbers.\n\n#### Large Codebase Strategy\n\nFor codebases with multiple top-level modules, deep nesting, or hundreds of source files:\n\n- **Primary: tracked sequential analysis.** Create a `.codebase-documentor-progress.md` task board to track progress through sections, enabling resumability if interrupted. This works on all platforms (Claude Code, Cursor, Codex, or any coding assistant).\n- **Acceleration: parallel workers.** If the environment supports spawning parallel agents, assign outline sections to independent workers. Each worker reads its mapped files and produces section content with citations. Keep Architecture Overview and cross-cutting sections in the main session for assembly.\n\nSee [recursive-analysis.md](references\u002Frecursive-analysis.md) for detailed instructions on both approaches.\n\n### Step 5: Generate Diagrams\n\nTwo types of diagrams serve different purposes:\n\n**Sequence\u002Fflow diagrams — inline Mermaid.** For request lifecycle traces and data pipeline flows identified in Step 4, generate Mermaid `sequenceDiagram` or `flowchart` blocks inline in the relevant CODEBASE_ANALYSIS.md sections. Mermaid is the community standard for simple flow diagrams and renders natively on GitHub. Keep these focused — one diagram per major request path or data flow.\n\n**Architecture diagram — always attempt the `aws-architecture-diagram` skill first.** For the system-level architecture diagram (services, infrastructure, boundaries): invoke the `aws-architecture-diagram` skill (part of the `deploy-on-aws` plugin) with \"analyze [target-directory]\" to trigger Mode A. It produces a validated draw.io diagram (`docs\u002F*.drawio`) with official AWS4 icons and professional styling. **Only if** the skill is genuinely unavailable (not installed, invocation fails), fall back to a Mermaid `flowchart TD` architecture overview directly in the Architecture Overview section. Include all major services, data stores, external dependencies, and infrastructure boundaries (VPC\u002Fsubnets as subgraphs when IaC is present).\n\nAfter diagram generation, try to export to PNG for embedding in the report. Run `drawio -x -f png -b 10 -o docs\u002F\u003Cname>.drawio.png docs\u002F\u003Cname>.drawio`. If `drawio` is not on PATH, skip the PNG export — the report will link to the `.drawio` file directly instead of embedding an image.\n\nCross-reference the diagram against the Architecture Overview text. Update documentation or diagram if they diverge.\n\n### Step 6: Assemble and Deliver\n\n1. Assemble all sections into `CODEBASE_ANALYSIS.md` following [technical-doc-template.md](references\u002Ftechnical-doc-template.md)\n2. Embed the architecture diagram as an image with a link to the editable source:\n\n   ```markdown\n   ![Architecture](.\u002Fdocs\u002F\u003Cname>.drawio.png)\n\n   > Editable source: [`docs\u002F\u003Cname>.drawio`](.\u002Fdocs\u002F\u003Cname>.drawio)\n   ```\n\n   If PNG export was not possible, link to the `.drawio` file directly. Mermaid flow diagrams go inline in relevant sections.\n3. When the codebase reveals clear business capabilities (API contracts, domain models, data flows, SLA configs), include a **Business Context** section at the end of `CODEBASE_ANALYSIS.md` following [business-context.md](references\u002Fbusiness-context.md). Skip only for pure libraries or infrastructure-only code. Do NOT include speculative content — but a README describing the product IS sufficient business context.\n4. Tag items not inferable from code with `[UNKNOWN]`\n5. Write `CODEBASE_ANALYSIS.md` to the target directory\n6. Remove `.codebase-documentor-progress.md` if it was created during analysis\n7. Present summary: components documented, APIs found, unknowns tagged, citations included\n\n## Output Files\n\n| File                   | Purpose                                                                        |\n| ---------------------- | ------------------------------------------------------------------------------ |\n| `CODEBASE_ANALYSIS.md` | Single output — technical docs, business context, citations, and flow diagrams |\n| `docs\u002F*.drawio`        | Architecture diagram source (editable in draw.io)                              |\n| `docs\u002F*.drawio.png`    | Architecture diagram image (embedded in report, if CLI export available)       |\n\n## Defaults\n\n| Setting              | Default                                                                  | Override        |\n| -------------------- | ------------------------------------------------------------------------ | --------------- |\n| Primary output       | CODEBASE_ANALYSIS.md                                                     | -               |\n| Flow diagrams        | Mermaid inline (sequenceDiagram \u002F flowchart)                             | \"skip diagrams\" |\n| Architecture diagram | draw.io via aws-architecture-diagram skill (Mermaid fallback if missing) | \"skip diagrams\" |\n| IaC reading          | Read-only (never modify)                                                 | -               |\n| AWS enrichment       | Enabled when AWS services detected                                       | \"skip AWS\"      |\n| Scope                | User-specified directory                                                 | -               |\n\n## Error Handling\n\nSee [error-scenarios.md](references\u002Ferror-scenarios.md) for handling of empty directories, missing entry points, missing IaC, existing output files, and MCP server failures.\n\n## MCP Servers\n\n### awsknowledge\n\nConsult when AWS services are detected. Use for enrichment (adding official service descriptions and documentation links to CODEBASE_ANALYSIS.md) and validation (confirming the analysis interpretation is correct). When the codebase is self-explanatory, validation is more valuable than enrichment — do not add MCP content just because the server is available.\n\nExample queries: search for \"Amazon ECS on EC2 GPU instances\" to confirm GPU support patterns, or read the official service page for an unfamiliar AWS service to get a one-line description.\n\n### awsiac\n\nConsult when CDK or CloudFormation files are detected. Use primarily for validation — confirm that the interpretation of a construct or resource type matches its actual behavior. Particularly useful for complex constructs with non-obvious defaults.\n\nExample queries: confirm properties of `ecs.FargateService` vs `ecs.Ec2Service` or verify CloudFormation resource relationships. Terraform files are still analyzed by the skill itself (see [discovery-patterns.md](references\u002Fdiscovery-patterns.md) IaC Detection), just without this MCP server's schema validation.\n\n## References\n\n- [Output template](references\u002Ftechnical-doc-template.md) — CODEBASE_ANALYSIS.md section structure\n- [Business context](references\u002Fbusiness-context.md) — Business Context section guidance (when to include, what to cover)\n- [Citation format](references\u002Fcitation-format.md) — Clickable citation rules and anchoring\n- [Error scenarios](references\u002Ferror-scenarios.md) — Handling common failure conditions\n- [Exclusion patterns](references\u002Fexclusion-patterns.md) — Files and directories to skip during scanning\n- [Project detection](references\u002Fdiscovery-patterns.md) — Project type detection and entry point identification\n- [Code extraction](references\u002Fframework-patterns.md) — Framework-specific data extraction patterns\n- [Large codebase strategy](references\u002Frecursive-analysis.md) — Tracked sequential analysis and parallel workers\n",{"data":41,"body":42},{"name":4,"description":6,"license":26},{"type":43,"children":44},"root",[45,53,59,66,209,215,220,227,232,245,250,263,269,346,352,357,635,648,658,664,669,676,681,709,722,728,733,772,783,793,799,804,855,860,870,880,886,891,934,940,945,976,989,995,1000,1026,1089,1118,1123,1129,1319,1325,1402,1408,1539,1545,1557,1563,1567,1572,1577,1581,1586,1613,1619,1702],{"type":46,"tag":47,"props":48,"children":49},"element","h1",{"id":4},[50],{"type":51,"value":52},"text","Document Service",{"type":46,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Analyze codebases to produce structured technical documentation and architecture diagrams with source-of-truth citations. Every finding links back to the exact file and line it was derived from. Optimized for AWS workloads but works with any codebase.",{"type":46,"tag":60,"props":61,"children":63},"h2",{"id":62},"core-principles",[64],{"type":51,"value":65},"Core Principles",{"type":46,"tag":67,"props":68,"children":69},"ul",{},[70,91,101,111,121,148,158,199],{"type":46,"tag":71,"props":72,"children":73},"li",{},[74,80,82,89],{"type":46,"tag":75,"props":76,"children":77},"strong",{},[78],{"type":51,"value":79},"Explain WHY, not just WHAT.",{"type":51,"value":81}," The reader inherited this codebase and has zero context. Listing components is not enough — explain why the architecture is shaped this way. Search for code comments, TODOs, and commit messages that reveal design rationale. When no rationale exists, mark it ",{"type":46,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":51,"value":88},"[RATIONALE UNKNOWN]",{"type":51,"value":90},".",{"type":46,"tag":71,"props":92,"children":93},{},[94,99],{"type":46,"tag":75,"props":95,"children":96},{},[97],{"type":51,"value":98},"Trace end-to-end flows.",{"type":51,"value":100}," For every API endpoint or message handler, trace the complete request path from entry to response. Note every intermediate step, transformation, timeout, and failure point. This is the \"if it breaks at 3am, where do I look?\" analysis.",{"type":46,"tag":71,"props":102,"children":103},{},[104,109],{"type":46,"tag":75,"props":105,"children":106},{},[107],{"type":51,"value":108},"Deep-dive complex logic.",{"type":51,"value":110}," Identify the most complex or domain-specific code paths (ML pipelines, business rule engines, state machines, custom algorithms). Document HOW they work at the implementation level — the algorithm, key parameters, edge cases, and where production bugs will occur. Surface-level summaries of complex code provide no value over a naive AI prompt.",{"type":46,"tag":71,"props":112,"children":113},{},[114,119],{"type":46,"tag":75,"props":115,"children":116},{},[117],{"type":51,"value":118},"Surface implicit knowledge.",{"type":51,"value":120}," Look for hardcoded values, magic numbers, environment-dependent behavior, and undocumented assumptions. These are the tribal knowledge items that disappear when teams leave.",{"type":46,"tag":71,"props":122,"children":123},{},[124,129,131,137,139,146],{"type":46,"tag":75,"props":125,"children":126},{},[127],{"type":51,"value":128},"Every claim must be traceable.",{"type":51,"value":130}," Include ",{"type":46,"tag":83,"props":132,"children":134},{"className":133},[],[135],{"type":51,"value":136},"file:line",{"type":51,"value":138}," citations for every finding. See ",{"type":46,"tag":140,"props":141,"children":143},"a",{"href":142},"references\u002Fcitation-format.md",[144],{"type":51,"value":145},"citation-format.md",{"type":51,"value":147},". Verify citations precisely — re-read the cited file and confirm the line number is within ±3 lines. Anchor with function\u002Fvariable names.",{"type":46,"tag":71,"props":149,"children":150},{},[151,156],{"type":46,"tag":75,"props":152,"children":153},{},[154],{"type":51,"value":155},"Code is the source of truth.",{"type":51,"value":157}," Document what actually exists in code, not what READMEs or wikis claim. Flag every discrepancy between documentation and reality.",{"type":46,"tag":71,"props":159,"children":160},{},[161,166,168,174,176,182,184,190,192,197],{"type":46,"tag":75,"props":162,"children":163},{},[164],{"type":51,"value":165},"Mark unknowns and risks explicitly.",{"type":51,"value":167}," Use ",{"type":46,"tag":83,"props":169,"children":171},{"className":170},[],[172],{"type":51,"value":173},"[UNKNOWN]",{"type":51,"value":175}," for items not inferable from code, ",{"type":46,"tag":83,"props":177,"children":179},{"className":178},[],[180],{"type":51,"value":181},"[RISK]",{"type":51,"value":183}," for unhandled failure modes, ",{"type":46,"tag":83,"props":185,"children":187},{"className":186},[],[188],{"type":51,"value":189},"[INFERRED]",{"type":51,"value":191}," for educated guesses, ",{"type":46,"tag":83,"props":193,"children":195},{"className":194},[],[196],{"type":51,"value":88},{"type":51,"value":198}," for unexplained architecture choices. Omitting markers undermines trust.",{"type":46,"tag":71,"props":200,"children":201},{},[202,207],{"type":46,"tag":75,"props":203,"children":204},{},[205],{"type":51,"value":206},"Verify quantitative claims.",{"type":51,"value":208}," List directory entries programmatically and use exact counts.",{"type":46,"tag":60,"props":210,"children":212},{"id":211},"workflow",[213],{"type":51,"value":214},"Workflow",{"type":46,"tag":54,"props":216,"children":217},{},[218],{"type":51,"value":219},"The workflow runs autonomously from Step 2 onward. Step 1 is the only interactive step.",{"type":46,"tag":221,"props":222,"children":224},"h3",{"id":223},"step-1-gather-context",[225],{"type":51,"value":226},"Step 1: Gather Context",{"type":46,"tag":54,"props":228,"children":229},{},[230],{"type":51,"value":231},"Gather from the user:",{"type":46,"tag":67,"props":233,"children":234},{},[235,240],{"type":46,"tag":71,"props":236,"children":237},{},[238],{"type":51,"value":239},"Target directory or service to analyze",{"type":46,"tag":71,"props":241,"children":242},{},[243],{"type":51,"value":244},"Any existing documentation, design docs, or business context (accept \"nothing\" — this skill is designed for undocumented codebases)",{"type":46,"tag":54,"props":246,"children":247},{},[248],{"type":51,"value":249},"If existing docs are provided, read them first to establish baseline context. If the target directory and context are already known (e.g., provided via automation or a pre-configured prompt), skip the interactive step and proceed directly to Step 2.",{"type":46,"tag":54,"props":251,"children":252},{},[253,255,261],{"type":51,"value":254},"Check whether ",{"type":46,"tag":83,"props":256,"children":258},{"className":257},[],[259],{"type":51,"value":260},"CODEBASE_ANALYSIS.md",{"type":51,"value":262}," already exists at the output path. If so, ask the user: \"Overwrite or write to a different filename?\" Resolve this before proceeding — the rest of the workflow runs autonomously.",{"type":46,"tag":221,"props":264,"children":266},{"id":265},"step-2-build-file-tree-and-detect-project-type",[267],{"type":51,"value":268},"Step 2: Build File Tree and Detect Project Type",{"type":46,"tag":270,"props":271,"children":272},"ol",{},[273,278,298,310,320,325],{"type":46,"tag":71,"props":274,"children":275},{},[276],{"type":51,"value":277},"List all files recursively in the target directory",{"type":46,"tag":71,"props":279,"children":280},{},[281,283,289,291,297],{"type":51,"value":282},"Apply exclusion patterns from ",{"type":46,"tag":140,"props":284,"children":286},{"href":285},"references\u002Fexclusion-patterns.md",[287],{"type":51,"value":288},"exclusion-patterns.md",{"type":51,"value":290},". Also respect ",{"type":46,"tag":83,"props":292,"children":294},{"className":293},[],[295],{"type":51,"value":296},".gitignore",{"type":51,"value":90},{"type":46,"tag":71,"props":299,"children":300},{},[301,303,309],{"type":51,"value":302},"Detect project type and framework from characteristic files. See ",{"type":46,"tag":140,"props":304,"children":306},{"href":305},"references\u002Fdiscovery-patterns.md",[307],{"type":51,"value":308},"discovery-patterns.md",{"type":51,"value":90},{"type":46,"tag":71,"props":311,"children":312},{},[313,315,319],{"type":51,"value":314},"Identify entry points based on detected project type. See ",{"type":46,"tag":140,"props":316,"children":317},{"href":305},[318],{"type":51,"value":308},{"type":51,"value":90},{"type":46,"tag":71,"props":321,"children":322},{},[323],{"type":51,"value":324},"Read the README, CLAUDE.md, or AGENTS.md if present — these contain project context.",{"type":46,"tag":71,"props":326,"children":327},{},[328,330,336,338,344],{"type":51,"value":329},"Check git branch names (",{"type":46,"tag":83,"props":331,"children":333},{"className":332},[],[334],{"type":51,"value":335},"git branch -a",{"type":51,"value":337},") for strategic context (e.g., a ",{"type":46,"tag":83,"props":339,"children":341},{"className":340},[],[342],{"type":51,"value":343},"dev\u002Frust",{"type":51,"value":345}," branch signals a language migration in progress). Note active branches in the Architecture Overview.",{"type":46,"tag":221,"props":347,"children":349},{"id":348},"step-3-generate-documentation-outline",[350],{"type":51,"value":351},"Step 3: Generate Documentation Outline",{"type":46,"tag":54,"props":353,"children":354},{},[355],{"type":51,"value":356},"Produce a hierarchical outline mapping each documentation section to specific source files:",{"type":46,"tag":358,"props":359,"children":364},"pre",{"className":360,"code":361,"language":362,"meta":363,"style":363},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Documentation Outline\n\n1. Architecture Overview → [entry points, IaC stack files] — explain WHY, not just WHAT\n2. [Module A: detected name] → [source files for module A]\n3. [Module B: detected name] → [source files for module B]\n4. Shared Utilities → [shared\u002Fcommon source files]\n5. Request Lifecycle → [trace end-to-end flows through the system]\n6. Domain Logic Deep-Dive → [core services at implementation level: algorithms, parameters, edge cases]\n7. Startup and Initialization → [boot sequence, model loading, cache warmup, dependency checks]\n8. API Contracts → [route definitions, OpenAPI specs]\n9. Data Models → [schema files, ORM models]\n10. Deployment → [IaC files, Dockerfiles]\n11. Configuration → [config files, .env.example, prompt templates, YAML configs, secrets refs]\n12. Monitoring and Observability → [log groups, metrics, tracing, alarms, dashboards]\n13. Security → [auth, encryption, IAM, network isolation]\n14. Local Development → [how to run\u002Ftest locally, CPU fallback, dev environment setup]\n15. Discrepancies → (cross-reference README\u002Fmetadata vs actual code)\n16. Failure Modes → (cross-cutting — include detection + recovery)\n17. Timeout and Dependency Chain → (map cascading timeouts across layers)\n","markdown","",[365],{"type":46,"tag":83,"props":366,"children":367},{"__ignoreMap":363},[368,386,396,411,425,439,453,467,481,495,509,523,537,551,565,579,593,607,621],{"type":46,"tag":369,"props":370,"children":373},"span",{"class":371,"line":372},"line",1,[374,380],{"type":46,"tag":369,"props":375,"children":377},{"style":376},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[378],{"type":51,"value":379},"## ",{"type":46,"tag":369,"props":381,"children":383},{"style":382},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[384],{"type":51,"value":385},"Documentation Outline\n",{"type":46,"tag":369,"props":387,"children":389},{"class":371,"line":388},2,[390],{"type":46,"tag":369,"props":391,"children":393},{"emptyLinePlaceholder":392},true,[394],{"type":51,"value":395},"\n",{"type":46,"tag":369,"props":397,"children":399},{"class":371,"line":398},3,[400,405],{"type":46,"tag":369,"props":401,"children":402},{"style":376},[403],{"type":51,"value":404},"1.",{"type":46,"tag":369,"props":406,"children":408},{"style":407},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[409],{"type":51,"value":410}," Architecture Overview → [entry points, IaC stack files] — explain WHY, not just WHAT\n",{"type":46,"tag":369,"props":412,"children":414},{"class":371,"line":413},4,[415,420],{"type":46,"tag":369,"props":416,"children":417},{"style":376},[418],{"type":51,"value":419},"2.",{"type":46,"tag":369,"props":421,"children":422},{"style":407},[423],{"type":51,"value":424}," [Module A: detected name] → [source files for module A]\n",{"type":46,"tag":369,"props":426,"children":428},{"class":371,"line":427},5,[429,434],{"type":46,"tag":369,"props":430,"children":431},{"style":376},[432],{"type":51,"value":433},"3.",{"type":46,"tag":369,"props":435,"children":436},{"style":407},[437],{"type":51,"value":438}," [Module B: detected name] → [source files for module B]\n",{"type":46,"tag":369,"props":440,"children":442},{"class":371,"line":441},6,[443,448],{"type":46,"tag":369,"props":444,"children":445},{"style":376},[446],{"type":51,"value":447},"4.",{"type":46,"tag":369,"props":449,"children":450},{"style":407},[451],{"type":51,"value":452}," Shared Utilities → [shared\u002Fcommon source files]\n",{"type":46,"tag":369,"props":454,"children":456},{"class":371,"line":455},7,[457,462],{"type":46,"tag":369,"props":458,"children":459},{"style":376},[460],{"type":51,"value":461},"5.",{"type":46,"tag":369,"props":463,"children":464},{"style":407},[465],{"type":51,"value":466}," Request Lifecycle → [trace end-to-end flows through the system]\n",{"type":46,"tag":369,"props":468,"children":470},{"class":371,"line":469},8,[471,476],{"type":46,"tag":369,"props":472,"children":473},{"style":376},[474],{"type":51,"value":475},"6.",{"type":46,"tag":369,"props":477,"children":478},{"style":407},[479],{"type":51,"value":480}," Domain Logic Deep-Dive → [core services at implementation level: algorithms, parameters, edge cases]\n",{"type":46,"tag":369,"props":482,"children":484},{"class":371,"line":483},9,[485,490],{"type":46,"tag":369,"props":486,"children":487},{"style":376},[488],{"type":51,"value":489},"7.",{"type":46,"tag":369,"props":491,"children":492},{"style":407},[493],{"type":51,"value":494}," Startup and Initialization → [boot sequence, model loading, cache warmup, dependency checks]\n",{"type":46,"tag":369,"props":496,"children":498},{"class":371,"line":497},10,[499,504],{"type":46,"tag":369,"props":500,"children":501},{"style":376},[502],{"type":51,"value":503},"8.",{"type":46,"tag":369,"props":505,"children":506},{"style":407},[507],{"type":51,"value":508}," API Contracts → [route definitions, OpenAPI specs]\n",{"type":46,"tag":369,"props":510,"children":512},{"class":371,"line":511},11,[513,518],{"type":46,"tag":369,"props":514,"children":515},{"style":376},[516],{"type":51,"value":517},"9.",{"type":46,"tag":369,"props":519,"children":520},{"style":407},[521],{"type":51,"value":522}," Data Models → [schema files, ORM models]\n",{"type":46,"tag":369,"props":524,"children":526},{"class":371,"line":525},12,[527,532],{"type":46,"tag":369,"props":528,"children":529},{"style":376},[530],{"type":51,"value":531},"10.",{"type":46,"tag":369,"props":533,"children":534},{"style":407},[535],{"type":51,"value":536}," Deployment → [IaC files, Dockerfiles]\n",{"type":46,"tag":369,"props":538,"children":540},{"class":371,"line":539},13,[541,546],{"type":46,"tag":369,"props":542,"children":543},{"style":376},[544],{"type":51,"value":545},"11.",{"type":46,"tag":369,"props":547,"children":548},{"style":407},[549],{"type":51,"value":550}," Configuration → [config files, .env.example, prompt templates, YAML configs, secrets refs]\n",{"type":46,"tag":369,"props":552,"children":554},{"class":371,"line":553},14,[555,560],{"type":46,"tag":369,"props":556,"children":557},{"style":376},[558],{"type":51,"value":559},"12.",{"type":46,"tag":369,"props":561,"children":562},{"style":407},[563],{"type":51,"value":564}," Monitoring and Observability → [log groups, metrics, tracing, alarms, dashboards]\n",{"type":46,"tag":369,"props":566,"children":568},{"class":371,"line":567},15,[569,574],{"type":46,"tag":369,"props":570,"children":571},{"style":376},[572],{"type":51,"value":573},"13.",{"type":46,"tag":369,"props":575,"children":576},{"style":407},[577],{"type":51,"value":578}," Security → [auth, encryption, IAM, network isolation]\n",{"type":46,"tag":369,"props":580,"children":582},{"class":371,"line":581},16,[583,588],{"type":46,"tag":369,"props":584,"children":585},{"style":376},[586],{"type":51,"value":587},"14.",{"type":46,"tag":369,"props":589,"children":590},{"style":407},[591],{"type":51,"value":592}," Local Development → [how to run\u002Ftest locally, CPU fallback, dev environment setup]\n",{"type":46,"tag":369,"props":594,"children":596},{"class":371,"line":595},17,[597,602],{"type":46,"tag":369,"props":598,"children":599},{"style":376},[600],{"type":51,"value":601},"15.",{"type":46,"tag":369,"props":603,"children":604},{"style":407},[605],{"type":51,"value":606}," Discrepancies → (cross-reference README\u002Fmetadata vs actual code)\n",{"type":46,"tag":369,"props":608,"children":610},{"class":371,"line":609},18,[611,616],{"type":46,"tag":369,"props":612,"children":613},{"style":376},[614],{"type":51,"value":615},"16.",{"type":46,"tag":369,"props":617,"children":618},{"style":407},[619],{"type":51,"value":620}," Failure Modes → (cross-cutting — include detection + recovery)\n",{"type":46,"tag":369,"props":622,"children":624},{"class":371,"line":623},19,[625,630],{"type":46,"tag":369,"props":626,"children":627},{"style":376},[628],{"type":51,"value":629},"17.",{"type":46,"tag":369,"props":631,"children":632},{"style":407},[633],{"type":51,"value":634}," Timeout and Dependency Chain → (map cascading timeouts across layers)\n",{"type":46,"tag":54,"props":636,"children":637},{},[638,640,646],{"type":51,"value":639},"Follow the section structure in ",{"type":46,"tag":140,"props":641,"children":643},{"href":642},"references\u002Ftechnical-doc-template.md",[644],{"type":51,"value":645},"technical-doc-template.md",{"type":51,"value":647}," but adapt to the actual codebase — add sections for significant modules, skip sections that don't apply. Aim for balance: each section should map to a meaningful subset of files. If a module maps to more than ~30 files, consider splitting it into sub-sections.",{"type":46,"tag":54,"props":649,"children":650},{},[651,656],{"type":46,"tag":75,"props":652,"children":653},{},[654],{"type":51,"value":655},"Do NOT pause for user review.",{"type":51,"value":657}," Proceed immediately to analysis.",{"type":46,"tag":221,"props":659,"children":661},{"id":660},"step-4-analyze",[662],{"type":51,"value":663},"Step 4: Analyze",{"type":46,"tag":54,"props":665,"children":666},{},[667],{"type":51,"value":668},"Two core analysis paths:",{"type":46,"tag":670,"props":671,"children":673},"h4",{"id":672},"path-a-application-code",[674],{"type":51,"value":675},"Path A: Application Code",{"type":46,"tag":54,"props":677,"children":678},{},[679],{"type":51,"value":680},"For each outline section, read mapped source files and extract:",{"type":46,"tag":270,"props":682,"children":683},{},[684,689,694,699,704],{"type":46,"tag":71,"props":685,"children":686},{},[687],{"type":51,"value":688},"API and service definitions — route handlers, controllers, gRPC services, GraphQL resolvers",{"type":46,"tag":71,"props":690,"children":691},{},[692],{"type":51,"value":693},"Data model definitions — database schemas, ORM models, type definitions",{"type":46,"tag":71,"props":695,"children":696},{},[697],{"type":51,"value":698},"Internal dependencies — imports between modules, shared utilities, event handlers",{"type":46,"tag":71,"props":700,"children":701},{},[702],{"type":51,"value":703},"External integrations — SDK clients, HTTP calls, queue producers\u002Fconsumers",{"type":46,"tag":71,"props":705,"children":706},{},[707],{"type":51,"value":708},"Configuration — environment variables, feature flags, secrets references",{"type":46,"tag":54,"props":710,"children":711},{},[712,714,720],{"type":51,"value":713},"Consult ",{"type":46,"tag":140,"props":715,"children":717},{"href":716},"references\u002Fframework-patterns.md",[718],{"type":51,"value":719},"framework-patterns.md",{"type":51,"value":721}," for framework-specific extraction patterns.",{"type":46,"tag":670,"props":723,"children":725},{"id":724},"path-b-infrastructure-as-code",[726],{"type":51,"value":727},"Path B: Infrastructure-as-Code",{"type":46,"tag":54,"props":729,"children":730},{},[731],{"type":51,"value":732},"When IaC files are detected (CDK, CloudFormation, Terraform, Serverless Framework):",{"type":46,"tag":270,"props":734,"children":735},{},[736,741,746,751],{"type":46,"tag":71,"props":737,"children":738},{},[739],{"type":51,"value":740},"Parse resource definitions. Identify AWS resource types, relationships, and networking topology.",{"type":46,"tag":71,"props":742,"children":743},{},[744],{"type":51,"value":745},"Map infrastructure to application components that use them.",{"type":46,"tag":71,"props":747,"children":748},{},[749],{"type":51,"value":750},"Extract networking topology — VPCs, subnets, security groups.",{"type":46,"tag":71,"props":752,"children":753},{},[754,756,762,764,770],{"type":51,"value":755},"Consult MCP servers — use ",{"type":46,"tag":83,"props":757,"children":759},{"className":758},[],[760],{"type":51,"value":761},"awsiac",{"type":51,"value":763}," to confirm resource interpretations, ",{"type":46,"tag":83,"props":765,"children":767},{"className":766},[],[768],{"type":51,"value":769},"awsknowledge",{"type":51,"value":771}," for service descriptions.",{"type":46,"tag":54,"props":773,"children":774},{},[775,777,782],{"type":51,"value":776},"When no IaC is found, infer infrastructure from application code (SDK clients, connection strings, environment variables) and mark components as ",{"type":46,"tag":83,"props":778,"children":780},{"className":779},[],[781],{"type":51,"value":189},{"type":51,"value":90},{"type":46,"tag":54,"props":784,"children":785},{},[786,791],{"type":46,"tag":75,"props":787,"children":788},{},[789],{"type":51,"value":790},"Note on CDK projects:",{"type":51,"value":792}," In CDK codebases, the IaC IS application code (TypeScript\u002FPython constructs). Process CDK files in a single pass covering both Path A and Path B rather than treating them as separate analyses. Extract both the resource definitions (Path B) and the application logic interleaved with them (Lambda bundling, environment wiring, IAM grants — Path A) simultaneously.",{"type":46,"tag":670,"props":794,"children":796},{"id":795},"writing-sections",[797],{"type":51,"value":798},"Writing Sections",{"type":46,"tag":54,"props":800,"children":801},{},[802],{"type":51,"value":803},"For each outline section:",{"type":46,"tag":270,"props":805,"children":806},{},[807,812,817,827,845],{"type":46,"tag":71,"props":808,"children":809},{},[810],{"type":51,"value":811},"Re-read mapped source files for exact line numbers — do not rely on memory from earlier steps.",{"type":46,"tag":71,"props":813,"children":814},{},[815],{"type":51,"value":816},"Use grep for patterns — route definitions, model declarations, error handlers.",{"type":46,"tag":71,"props":818,"children":819},{},[820,822,826],{"type":51,"value":821},"Write content with inline citations. See ",{"type":46,"tag":140,"props":823,"children":824},{"href":142},[825],{"type":51,"value":145},{"type":51,"value":90},{"type":46,"tag":71,"props":828,"children":829},{},[830,835,837,843],{"type":46,"tag":75,"props":831,"children":832},{},[833],{"type":51,"value":834},"Document every source file.",{"type":51,"value":836}," Enumerate ALL non-generated source files. Every file should appear somewhere in the documentation — in a module table, component table, or at minimum a file inventory. Files that define symbols never imported by any execution path should be flagged as ",{"type":46,"tag":83,"props":838,"children":840},{"className":839},[],[841],{"type":51,"value":842},"[UNUSED]",{"type":51,"value":844}," potential dead code.",{"type":46,"tag":71,"props":846,"children":847},{},[848,853],{"type":46,"tag":75,"props":849,"children":850},{},[851],{"type":51,"value":852},"Analyze the test suite.",{"type":51,"value":854}," Document what tests verify, what coverage gaps exist, and how to interpret test failures. Tests reveal expected behavior and edge cases.",{"type":46,"tag":54,"props":856,"children":857},{},[858],{"type":51,"value":859},"Process cross-cutting sections (Failure Modes, Configuration, Security, Discrepancies) last, drawing on accumulated knowledge.",{"type":46,"tag":54,"props":861,"children":862},{},[863,868],{"type":46,"tag":75,"props":864,"children":865},{},[866],{"type":51,"value":867},"Discrepancy detection",{"type":51,"value":869},": After analyzing the codebase, re-read the README, CLAUDE.md, package.json description, and any project metadata. Flag every claim that does not match the actual code — features referenced but not implemented, resource types that differ, architecture components that don't exist. For legacy codebases, this \"trust but verify\" pass is the single most valuable output.",{"type":46,"tag":54,"props":871,"children":872},{},[873,878],{"type":46,"tag":75,"props":874,"children":875},{},[876],{"type":51,"value":877},"Actionable failure modes",{"type":51,"value":879},": For each failure mode, include the detection method (CloudWatch metric, log pattern, symptom) and recovery steps (actual commands), not just a description. The reader is an on-call engineer at 3am.",{"type":46,"tag":670,"props":881,"children":883},{"id":882},"deep-analysis-approach",[884],{"type":51,"value":885},"Deep Analysis Approach",{"type":46,"tag":54,"props":887,"children":888},{},[889],{"type":51,"value":890},"Do not attempt a single-pass skim. For each module or service, use iterative deepening:",{"type":46,"tag":270,"props":892,"children":893},{},[894,904,914,924],{"type":46,"tag":71,"props":895,"children":896},{},[897,902],{"type":46,"tag":75,"props":898,"children":899},{},[900],{"type":51,"value":901},"First pass",{"type":51,"value":903}," — scan file structure and entry points to understand scope",{"type":46,"tag":71,"props":905,"children":906},{},[907,912],{"type":46,"tag":75,"props":908,"children":909},{},[910],{"type":51,"value":911},"Second pass",{"type":51,"value":913}," — read core files, identify questions (what calls this? where is this configured? what happens on error?)",{"type":46,"tag":71,"props":915,"children":916},{},[917,922],{"type":46,"tag":75,"props":918,"children":919},{},[920],{"type":51,"value":921},"Third pass",{"type":51,"value":923}," — search for answers to those questions across the codebase, trace cross-module dependencies",{"type":46,"tag":71,"props":925,"children":926},{},[927,932],{"type":46,"tag":75,"props":928,"children":929},{},[930],{"type":51,"value":931},"Write",{"type":51,"value":933}," — only write the section after all three passes. Re-read cited files to verify exact line numbers.",{"type":46,"tag":670,"props":935,"children":937},{"id":936},"large-codebase-strategy",[938],{"type":51,"value":939},"Large Codebase Strategy",{"type":46,"tag":54,"props":941,"children":942},{},[943],{"type":51,"value":944},"For codebases with multiple top-level modules, deep nesting, or hundreds of source files:",{"type":46,"tag":67,"props":946,"children":947},{},[948,966],{"type":46,"tag":71,"props":949,"children":950},{},[951,956,958,964],{"type":46,"tag":75,"props":952,"children":953},{},[954],{"type":51,"value":955},"Primary: tracked sequential analysis.",{"type":51,"value":957}," Create a ",{"type":46,"tag":83,"props":959,"children":961},{"className":960},[],[962],{"type":51,"value":963},".codebase-documentor-progress.md",{"type":51,"value":965}," task board to track progress through sections, enabling resumability if interrupted. This works on all platforms (Claude Code, Cursor, Codex, or any coding assistant).",{"type":46,"tag":71,"props":967,"children":968},{},[969,974],{"type":46,"tag":75,"props":970,"children":971},{},[972],{"type":51,"value":973},"Acceleration: parallel workers.",{"type":51,"value":975}," If the environment supports spawning parallel agents, assign outline sections to independent workers. Each worker reads its mapped files and produces section content with citations. Keep Architecture Overview and cross-cutting sections in the main session for assembly.",{"type":46,"tag":54,"props":977,"children":978},{},[979,981,987],{"type":51,"value":980},"See ",{"type":46,"tag":140,"props":982,"children":984},{"href":983},"references\u002Frecursive-analysis.md",[985],{"type":51,"value":986},"recursive-analysis.md",{"type":51,"value":988}," for detailed instructions on both approaches.",{"type":46,"tag":221,"props":990,"children":992},{"id":991},"step-5-generate-diagrams",[993],{"type":51,"value":994},"Step 5: Generate Diagrams",{"type":46,"tag":54,"props":996,"children":997},{},[998],{"type":51,"value":999},"Two types of diagrams serve different purposes:",{"type":46,"tag":54,"props":1001,"children":1002},{},[1003,1008,1010,1016,1018,1024],{"type":46,"tag":75,"props":1004,"children":1005},{},[1006],{"type":51,"value":1007},"Sequence\u002Fflow diagrams — inline Mermaid.",{"type":51,"value":1009}," For request lifecycle traces and data pipeline flows identified in Step 4, generate Mermaid ",{"type":46,"tag":83,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":51,"value":1015},"sequenceDiagram",{"type":51,"value":1017}," or ",{"type":46,"tag":83,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":51,"value":1023},"flowchart",{"type":51,"value":1025}," blocks inline in the relevant CODEBASE_ANALYSIS.md sections. Mermaid is the community standard for simple flow diagrams and renders natively on GitHub. Keep these focused — one diagram per major request path or data flow.",{"type":46,"tag":54,"props":1027,"children":1028},{},[1029,1042,1044,1049,1051,1057,1059,1064,1066,1072,1074,1079,1081,1087],{"type":46,"tag":75,"props":1030,"children":1031},{},[1032,1034,1040],{"type":51,"value":1033},"Architecture diagram — always attempt the ",{"type":46,"tag":83,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":51,"value":1039},"aws-architecture-diagram",{"type":51,"value":1041}," skill first.",{"type":51,"value":1043}," For the system-level architecture diagram (services, infrastructure, boundaries): invoke the ",{"type":46,"tag":83,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":51,"value":1039},{"type":51,"value":1050}," skill (part of the ",{"type":46,"tag":83,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":51,"value":1056},"deploy-on-aws",{"type":51,"value":1058}," plugin) with \"analyze ",{"type":46,"tag":369,"props":1060,"children":1061},{},[1062],{"type":51,"value":1063},"target-directory",{"type":51,"value":1065},"\" to trigger Mode A. It produces a validated draw.io diagram (",{"type":46,"tag":83,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":51,"value":1071},"docs\u002F*.drawio",{"type":51,"value":1073},") with official AWS4 icons and professional styling. ",{"type":46,"tag":75,"props":1075,"children":1076},{},[1077],{"type":51,"value":1078},"Only if",{"type":51,"value":1080}," the skill is genuinely unavailable (not installed, invocation fails), fall back to a Mermaid ",{"type":46,"tag":83,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":51,"value":1086},"flowchart TD",{"type":51,"value":1088}," architecture overview directly in the Architecture Overview section. Include all major services, data stores, external dependencies, and infrastructure boundaries (VPC\u002Fsubnets as subgraphs when IaC is present).",{"type":46,"tag":54,"props":1090,"children":1091},{},[1092,1094,1100,1102,1108,1110,1116],{"type":51,"value":1093},"After diagram generation, try to export to PNG for embedding in the report. Run ",{"type":46,"tag":83,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":51,"value":1099},"drawio -x -f png -b 10 -o docs\u002F\u003Cname>.drawio.png docs\u002F\u003Cname>.drawio",{"type":51,"value":1101},". If ",{"type":46,"tag":83,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":51,"value":1107},"drawio",{"type":51,"value":1109}," is not on PATH, skip the PNG export — the report will link to the ",{"type":46,"tag":83,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":51,"value":1115},".drawio",{"type":51,"value":1117}," file directly instead of embedding an image.",{"type":46,"tag":54,"props":1119,"children":1120},{},[1121],{"type":51,"value":1122},"Cross-reference the diagram against the Architecture Overview text. Update documentation or diagram if they diverge.",{"type":46,"tag":221,"props":1124,"children":1126},{"id":1125},"step-6-assemble-and-deliver",[1127],{"type":51,"value":1128},"Step 6: Assemble and Deliver",{"type":46,"tag":270,"props":1130,"children":1131},{},[1132,1148,1254,1280,1290,1302,1314],{"type":46,"tag":71,"props":1133,"children":1134},{},[1135,1137,1142,1144],{"type":51,"value":1136},"Assemble all sections into ",{"type":46,"tag":83,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":51,"value":260},{"type":51,"value":1143}," following ",{"type":46,"tag":140,"props":1145,"children":1146},{"href":642},[1147],{"type":51,"value":645},{"type":46,"tag":71,"props":1149,"children":1150},{},[1151,1153,1241,1245,1247,1252],{"type":51,"value":1152},"Embed the architecture diagram as an image with a link to the editable source:",{"type":46,"tag":358,"props":1154,"children":1156},{"className":360,"code":1155,"language":362,"meta":363,"style":363},"![Architecture](.\u002Fdocs\u002F\u003Cname>.drawio.png)\n\n> Editable source: [`docs\u002F\u003Cname>.drawio`](.\u002Fdocs\u002F\u003Cname>.drawio)\n",[1157],{"type":46,"tag":83,"props":1158,"children":1159},{"__ignoreMap":363},[1160,1190,1197],{"type":46,"tag":369,"props":1161,"children":1162},{"class":371,"line":372},[1163,1168,1174,1179,1185],{"type":46,"tag":369,"props":1164,"children":1165},{"style":376},[1166],{"type":51,"value":1167},"![",{"type":46,"tag":369,"props":1169,"children":1171},{"style":1170},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1172],{"type":51,"value":1173},"Architecture",{"type":46,"tag":369,"props":1175,"children":1176},{"style":376},[1177],{"type":51,"value":1178},"](",{"type":46,"tag":369,"props":1180,"children":1182},{"style":1181},"--shiki-light:#90A4AE;--shiki-light-text-decoration:underline;--shiki-default:#EEFFFF;--shiki-default-text-decoration:underline;--shiki-dark:#BABED8;--shiki-dark-text-decoration:underline",[1183],{"type":51,"value":1184},".\u002Fdocs\u002F\u003Cname>.drawio.png",{"type":46,"tag":369,"props":1186,"children":1187},{"style":376},[1188],{"type":51,"value":1189},")\n",{"type":46,"tag":369,"props":1191,"children":1192},{"class":371,"line":388},[1193],{"type":46,"tag":369,"props":1194,"children":1195},{"emptyLinePlaceholder":392},[1196],{"type":51,"value":395},{"type":46,"tag":369,"props":1198,"children":1199},{"class":371,"line":398},[1200,1206,1212,1217,1223,1227,1231,1237],{"type":46,"tag":369,"props":1201,"children":1203},{"style":1202},"--shiki-light:#FF5370;--shiki-light-font-style:italic;--shiki-default:#FF9CAC;--shiki-default-font-style:italic;--shiki-dark:#FF9CAC;--shiki-dark-font-style:italic",[1204],{"type":51,"value":1205},">",{"type":46,"tag":369,"props":1207,"children":1209},{"style":1208},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1210],{"type":51,"value":1211}," Editable source: [",{"type":46,"tag":369,"props":1213,"children":1214},{"style":1208},[1215],{"type":51,"value":1216},"`",{"type":46,"tag":369,"props":1218,"children":1220},{"style":1219},"--shiki-light:#91B859;--shiki-light-font-style:italic;--shiki-default:#C3E88D;--shiki-default-font-style:italic;--shiki-dark:#C3E88D;--shiki-dark-font-style:italic",[1221],{"type":51,"value":1222},"docs\u002F\u003Cname>.drawio",{"type":46,"tag":369,"props":1224,"children":1225},{"style":1208},[1226],{"type":51,"value":1216},{"type":46,"tag":369,"props":1228,"children":1229},{"style":1208},[1230],{"type":51,"value":1178},{"type":46,"tag":369,"props":1232,"children":1234},{"style":1233},"--shiki-light:#E53935;--shiki-light-text-decoration:underline;--shiki-default:#F07178;--shiki-default-text-decoration:underline;--shiki-dark:#F07178;--shiki-dark-text-decoration:underline",[1235],{"type":51,"value":1236},".\u002Fdocs\u002F\u003Cname>.drawio",{"type":46,"tag":369,"props":1238,"children":1239},{"style":1208},[1240],{"type":51,"value":1189},{"type":46,"tag":1242,"props":1243,"children":1244},"br",{},[],{"type":51,"value":1246},"If PNG export was not possible, link to the ",{"type":46,"tag":83,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":51,"value":1115},{"type":51,"value":1253}," file directly. Mermaid flow diagrams go inline in relevant sections.",{"type":46,"tag":71,"props":1255,"children":1256},{},[1257,1259,1264,1266,1271,1272,1278],{"type":51,"value":1258},"When the codebase reveals clear business capabilities (API contracts, domain models, data flows, SLA configs), include a ",{"type":46,"tag":75,"props":1260,"children":1261},{},[1262],{"type":51,"value":1263},"Business Context",{"type":51,"value":1265}," section at the end of ",{"type":46,"tag":83,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":51,"value":260},{"type":51,"value":1143},{"type":46,"tag":140,"props":1273,"children":1275},{"href":1274},"references\u002Fbusiness-context.md",[1276],{"type":51,"value":1277},"business-context.md",{"type":51,"value":1279},". Skip only for pure libraries or infrastructure-only code. Do NOT include speculative content — but a README describing the product IS sufficient business context.",{"type":46,"tag":71,"props":1281,"children":1282},{},[1283,1285],{"type":51,"value":1284},"Tag items not inferable from code with ",{"type":46,"tag":83,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":51,"value":173},{"type":46,"tag":71,"props":1291,"children":1292},{},[1293,1295,1300],{"type":51,"value":1294},"Write ",{"type":46,"tag":83,"props":1296,"children":1298},{"className":1297},[],[1299],{"type":51,"value":260},{"type":51,"value":1301}," to the target directory",{"type":46,"tag":71,"props":1303,"children":1304},{},[1305,1307,1312],{"type":51,"value":1306},"Remove ",{"type":46,"tag":83,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":51,"value":963},{"type":51,"value":1313}," if it was created during analysis",{"type":46,"tag":71,"props":1315,"children":1316},{},[1317],{"type":51,"value":1318},"Present summary: components documented, APIs found, unknowns tagged, citations included",{"type":46,"tag":60,"props":1320,"children":1322},{"id":1321},"output-files",[1323],{"type":51,"value":1324},"Output Files",{"type":46,"tag":1326,"props":1327,"children":1328},"table",{},[1329,1348],{"type":46,"tag":1330,"props":1331,"children":1332},"thead",{},[1333],{"type":46,"tag":1334,"props":1335,"children":1336},"tr",{},[1337,1343],{"type":46,"tag":1338,"props":1339,"children":1340},"th",{},[1341],{"type":51,"value":1342},"File",{"type":46,"tag":1338,"props":1344,"children":1345},{},[1346],{"type":51,"value":1347},"Purpose",{"type":46,"tag":1349,"props":1350,"children":1351},"tbody",{},[1352,1369,1385],{"type":46,"tag":1334,"props":1353,"children":1354},{},[1355,1364],{"type":46,"tag":1356,"props":1357,"children":1358},"td",{},[1359],{"type":46,"tag":83,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":51,"value":260},{"type":46,"tag":1356,"props":1365,"children":1366},{},[1367],{"type":51,"value":1368},"Single output — technical docs, business context, citations, and flow diagrams",{"type":46,"tag":1334,"props":1370,"children":1371},{},[1372,1380],{"type":46,"tag":1356,"props":1373,"children":1374},{},[1375],{"type":46,"tag":83,"props":1376,"children":1378},{"className":1377},[],[1379],{"type":51,"value":1071},{"type":46,"tag":1356,"props":1381,"children":1382},{},[1383],{"type":51,"value":1384},"Architecture diagram source (editable in draw.io)",{"type":46,"tag":1334,"props":1386,"children":1387},{},[1388,1397],{"type":46,"tag":1356,"props":1389,"children":1390},{},[1391],{"type":46,"tag":83,"props":1392,"children":1394},{"className":1393},[],[1395],{"type":51,"value":1396},"docs\u002F*.drawio.png",{"type":46,"tag":1356,"props":1398,"children":1399},{},[1400],{"type":51,"value":1401},"Architecture diagram image (embedded in report, if CLI export available)",{"type":46,"tag":60,"props":1403,"children":1405},{"id":1404},"defaults",[1406],{"type":51,"value":1407},"Defaults",{"type":46,"tag":1326,"props":1409,"children":1410},{},[1411,1432],{"type":46,"tag":1330,"props":1412,"children":1413},{},[1414],{"type":46,"tag":1334,"props":1415,"children":1416},{},[1417,1422,1427],{"type":46,"tag":1338,"props":1418,"children":1419},{},[1420],{"type":51,"value":1421},"Setting",{"type":46,"tag":1338,"props":1423,"children":1424},{},[1425],{"type":51,"value":1426},"Default",{"type":46,"tag":1338,"props":1428,"children":1429},{},[1430],{"type":51,"value":1431},"Override",{"type":46,"tag":1349,"props":1433,"children":1434},{},[1435,1452,1470,1487,1504,1522],{"type":46,"tag":1334,"props":1436,"children":1437},{},[1438,1443,1447],{"type":46,"tag":1356,"props":1439,"children":1440},{},[1441],{"type":51,"value":1442},"Primary output",{"type":46,"tag":1356,"props":1444,"children":1445},{},[1446],{"type":51,"value":260},{"type":46,"tag":1356,"props":1448,"children":1449},{},[1450],{"type":51,"value":1451},"-",{"type":46,"tag":1334,"props":1453,"children":1454},{},[1455,1460,1465],{"type":46,"tag":1356,"props":1456,"children":1457},{},[1458],{"type":51,"value":1459},"Flow diagrams",{"type":46,"tag":1356,"props":1461,"children":1462},{},[1463],{"type":51,"value":1464},"Mermaid inline (sequenceDiagram \u002F flowchart)",{"type":46,"tag":1356,"props":1466,"children":1467},{},[1468],{"type":51,"value":1469},"\"skip diagrams\"",{"type":46,"tag":1334,"props":1471,"children":1472},{},[1473,1478,1483],{"type":46,"tag":1356,"props":1474,"children":1475},{},[1476],{"type":51,"value":1477},"Architecture diagram",{"type":46,"tag":1356,"props":1479,"children":1480},{},[1481],{"type":51,"value":1482},"draw.io via aws-architecture-diagram skill (Mermaid fallback if missing)",{"type":46,"tag":1356,"props":1484,"children":1485},{},[1486],{"type":51,"value":1469},{"type":46,"tag":1334,"props":1488,"children":1489},{},[1490,1495,1500],{"type":46,"tag":1356,"props":1491,"children":1492},{},[1493],{"type":51,"value":1494},"IaC reading",{"type":46,"tag":1356,"props":1496,"children":1497},{},[1498],{"type":51,"value":1499},"Read-only (never modify)",{"type":46,"tag":1356,"props":1501,"children":1502},{},[1503],{"type":51,"value":1451},{"type":46,"tag":1334,"props":1505,"children":1506},{},[1507,1512,1517],{"type":46,"tag":1356,"props":1508,"children":1509},{},[1510],{"type":51,"value":1511},"AWS enrichment",{"type":46,"tag":1356,"props":1513,"children":1514},{},[1515],{"type":51,"value":1516},"Enabled when AWS services detected",{"type":46,"tag":1356,"props":1518,"children":1519},{},[1520],{"type":51,"value":1521},"\"skip AWS\"",{"type":46,"tag":1334,"props":1523,"children":1524},{},[1525,1530,1535],{"type":46,"tag":1356,"props":1526,"children":1527},{},[1528],{"type":51,"value":1529},"Scope",{"type":46,"tag":1356,"props":1531,"children":1532},{},[1533],{"type":51,"value":1534},"User-specified directory",{"type":46,"tag":1356,"props":1536,"children":1537},{},[1538],{"type":51,"value":1451},{"type":46,"tag":60,"props":1540,"children":1542},{"id":1541},"error-handling",[1543],{"type":51,"value":1544},"Error Handling",{"type":46,"tag":54,"props":1546,"children":1547},{},[1548,1549,1555],{"type":51,"value":980},{"type":46,"tag":140,"props":1550,"children":1552},{"href":1551},"references\u002Ferror-scenarios.md",[1553],{"type":51,"value":1554},"error-scenarios.md",{"type":51,"value":1556}," for handling of empty directories, missing entry points, missing IaC, existing output files, and MCP server failures.",{"type":46,"tag":60,"props":1558,"children":1560},{"id":1559},"mcp-servers",[1561],{"type":51,"value":1562},"MCP Servers",{"type":46,"tag":221,"props":1564,"children":1565},{"id":769},[1566],{"type":51,"value":769},{"type":46,"tag":54,"props":1568,"children":1569},{},[1570],{"type":51,"value":1571},"Consult when AWS services are detected. Use for enrichment (adding official service descriptions and documentation links to CODEBASE_ANALYSIS.md) and validation (confirming the analysis interpretation is correct). When the codebase is self-explanatory, validation is more valuable than enrichment — do not add MCP content just because the server is available.",{"type":46,"tag":54,"props":1573,"children":1574},{},[1575],{"type":51,"value":1576},"Example queries: search for \"Amazon ECS on EC2 GPU instances\" to confirm GPU support patterns, or read the official service page for an unfamiliar AWS service to get a one-line description.",{"type":46,"tag":221,"props":1578,"children":1579},{"id":761},[1580],{"type":51,"value":761},{"type":46,"tag":54,"props":1582,"children":1583},{},[1584],{"type":51,"value":1585},"Consult when CDK or CloudFormation files are detected. Use primarily for validation — confirm that the interpretation of a construct or resource type matches its actual behavior. Particularly useful for complex constructs with non-obvious defaults.",{"type":46,"tag":54,"props":1587,"children":1588},{},[1589,1591,1597,1599,1605,1607,1611],{"type":51,"value":1590},"Example queries: confirm properties of ",{"type":46,"tag":83,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":51,"value":1596},"ecs.FargateService",{"type":51,"value":1598}," vs ",{"type":46,"tag":83,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":51,"value":1604},"ecs.Ec2Service",{"type":51,"value":1606}," or verify CloudFormation resource relationships. Terraform files are still analyzed by the skill itself (see ",{"type":46,"tag":140,"props":1608,"children":1609},{"href":305},[1610],{"type":51,"value":308},{"type":51,"value":1612}," IaC Detection), just without this MCP server's schema validation.",{"type":46,"tag":60,"props":1614,"children":1616},{"id":1615},"references",[1617],{"type":51,"value":1618},"References",{"type":46,"tag":67,"props":1620,"children":1621},{},[1622,1632,1642,1652,1662,1672,1682,1692],{"type":46,"tag":71,"props":1623,"children":1624},{},[1625,1630],{"type":46,"tag":140,"props":1626,"children":1627},{"href":642},[1628],{"type":51,"value":1629},"Output template",{"type":51,"value":1631}," — CODEBASE_ANALYSIS.md section structure",{"type":46,"tag":71,"props":1633,"children":1634},{},[1635,1640],{"type":46,"tag":140,"props":1636,"children":1637},{"href":1274},[1638],{"type":51,"value":1639},"Business context",{"type":51,"value":1641}," — Business Context section guidance (when to include, what to cover)",{"type":46,"tag":71,"props":1643,"children":1644},{},[1645,1650],{"type":46,"tag":140,"props":1646,"children":1647},{"href":142},[1648],{"type":51,"value":1649},"Citation format",{"type":51,"value":1651}," — Clickable citation rules and anchoring",{"type":46,"tag":71,"props":1653,"children":1654},{},[1655,1660],{"type":46,"tag":140,"props":1656,"children":1657},{"href":1551},[1658],{"type":51,"value":1659},"Error scenarios",{"type":51,"value":1661}," — Handling common failure conditions",{"type":46,"tag":71,"props":1663,"children":1664},{},[1665,1670],{"type":46,"tag":140,"props":1666,"children":1667},{"href":285},[1668],{"type":51,"value":1669},"Exclusion patterns",{"type":51,"value":1671}," — Files and directories to skip during scanning",{"type":46,"tag":71,"props":1673,"children":1674},{},[1675,1680],{"type":46,"tag":140,"props":1676,"children":1677},{"href":305},[1678],{"type":51,"value":1679},"Project detection",{"type":51,"value":1681}," — Project type detection and entry point identification",{"type":46,"tag":71,"props":1683,"children":1684},{},[1685,1690],{"type":46,"tag":140,"props":1686,"children":1687},{"href":716},[1688],{"type":51,"value":1689},"Code extraction",{"type":51,"value":1691}," — Framework-specific data extraction patterns",{"type":46,"tag":71,"props":1693,"children":1694},{},[1695,1700],{"type":46,"tag":140,"props":1696,"children":1697},{"href":983},[1698],{"type":51,"value":1699},"Large codebase strategy",{"type":51,"value":1701}," — Tracked sequential analysis and parallel workers",{"type":46,"tag":1703,"props":1704,"children":1705},"style",{},[1706],{"type":51,"value":1707},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1709,"total":1888},[1710,1730,1751,1761,1774,1787,1797,1807,1828,1843,1858,1873],{"slug":1711,"name":1711,"fn":1712,"description":1713,"org":1714,"tags":1715,"stars":1727,"repoUrl":1728,"updatedAt":1729},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1716,1718,1721,1724],{"name":1717,"slug":32,"type":16},"AWS",{"name":1719,"slug":1720,"type":16},"Debugging","debugging",{"name":1722,"slug":1723,"type":16},"Logs","logs",{"name":1725,"slug":1726,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1731,"name":1732,"fn":1733,"description":1734,"org":1735,"tags":1736,"stars":1727,"repoUrl":1728,"updatedAt":1750},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1737,1740,1741,1744,1747],{"name":1738,"slug":1739,"type":16},"Aurora","aurora",{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},"Database","database",{"name":1745,"slug":1746,"type":16},"Serverless","serverless",{"name":1748,"slug":1749,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1752,"name":1753,"fn":1733,"description":1734,"org":1754,"tags":1755,"stars":1727,"repoUrl":1728,"updatedAt":1760},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1756,1757,1758,1759],{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1745,"slug":1746,"type":16},{"name":1748,"slug":1749,"type":16},"2026-07-12T08:36:42.694299",{"slug":1762,"name":1763,"fn":1733,"description":1734,"org":1764,"tags":1765,"stars":1727,"repoUrl":1728,"updatedAt":1773},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1766,1767,1768,1771,1772],{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1769,"slug":1770,"type":16},"Migration","migration",{"name":1745,"slug":1746,"type":16},{"name":1748,"slug":1749,"type":16},"2026-07-12T08:36:38.584057",{"slug":1775,"name":1776,"fn":1733,"description":1734,"org":1777,"tags":1778,"stars":1727,"repoUrl":1728,"updatedAt":1786},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1779,1780,1781,1784,1785],{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1782,"slug":1783,"type":16},"PostgreSQL","postgresql",{"name":1745,"slug":1746,"type":16},{"name":1748,"slug":1749,"type":16},"2026-07-12T08:36:46.530743",{"slug":1788,"name":1789,"fn":1733,"description":1734,"org":1790,"tags":1791,"stars":1727,"repoUrl":1728,"updatedAt":1796},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1792,1793,1794,1795],{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1745,"slug":1746,"type":16},{"name":1748,"slug":1749,"type":16},"2026-07-12T08:36:48.104182",{"slug":1798,"name":1798,"fn":1733,"description":1734,"org":1799,"tags":1800,"stars":1727,"repoUrl":1728,"updatedAt":1806},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1801,1802,1803,1804,1805],{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1769,"slug":1770,"type":16},{"name":1745,"slug":1746,"type":16},{"name":1748,"slug":1749,"type":16},"2026-07-12T08:36:36.374512",{"slug":1808,"name":1808,"fn":1809,"description":1810,"org":1811,"tags":1812,"stars":1825,"repoUrl":1826,"updatedAt":1827},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1813,1816,1819,1822],{"name":1814,"slug":1815,"type":16},"Accounting","accounting",{"name":1817,"slug":1818,"type":16},"Analytics","analytics",{"name":1820,"slug":1821,"type":16},"Cost Optimization","cost-optimization",{"name":1823,"slug":1824,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1829,"name":1829,"fn":1830,"description":1831,"org":1832,"tags":1833,"stars":1825,"repoUrl":1826,"updatedAt":1842},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1834,1835,1836,1839],{"name":1717,"slug":32,"type":16},{"name":1823,"slug":1824,"type":16},{"name":1837,"slug":1838,"type":16},"Management","management",{"name":1840,"slug":1841,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1844,"name":1844,"fn":1845,"description":1846,"org":1847,"tags":1848,"stars":1825,"repoUrl":1826,"updatedAt":1857},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1849,1850,1851,1854],{"name":1817,"slug":1818,"type":16},{"name":1823,"slug":1824,"type":16},{"name":1852,"slug":1853,"type":16},"Financial Statements","financial-statements",{"name":1855,"slug":1856,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1859,"name":1859,"fn":1860,"description":1861,"org":1862,"tags":1863,"stars":1825,"repoUrl":1826,"updatedAt":1872},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1864,1867,1870],{"name":1865,"slug":1866,"type":16},"Automation","automation",{"name":1868,"slug":1869,"type":16},"Documents","documents",{"name":1871,"slug":1859,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1874,"name":1874,"fn":1875,"description":1876,"org":1877,"tags":1878,"stars":1825,"repoUrl":1826,"updatedAt":1887},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1879,1880,1883,1884],{"name":1814,"slug":1815,"type":16},{"name":1881,"slug":1882,"type":16},"Data Analysis","data-analysis",{"name":1823,"slug":1824,"type":16},{"name":1885,"slug":1886,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":1890,"total":1989},[1891,1908,1926,1938,1953,1964,1974],{"slug":1892,"name":1892,"fn":1893,"description":1894,"org":1895,"tags":1896,"stars":23,"repoUrl":24,"updatedAt":1907},"amazon-location-service","integrate Amazon Location Service maps","Integrates Amazon Location Service APIs for AWS applications. Use this skill when users want to add maps (interactive MapLibre or static images); geocode addresses to coordinates or reverse geocode coordinates to addresses; calculate routes, travel times, or service areas; find places and businesses through text search, nearby search, or autocomplete suggestions; retrieve detailed place information including hours, contacts, and addresses; monitor geographical boundaries with geofences; or track device locations. Covers authentication, SDK integration, and all Amazon Location Service capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1897,1900,1901,1904],{"name":1898,"slug":1899,"type":16},"API Development","api-development",{"name":1717,"slug":32,"type":16},{"name":1902,"slug":1903,"type":16},"Maps","maps",{"name":1905,"slug":1906,"type":16},"Navigation","navigation","2026-07-12T08:39:49.88311",{"slug":1909,"name":1909,"fn":1910,"description":1911,"org":1912,"tags":1913,"stars":23,"repoUrl":24,"updatedAt":1925},"amplify-workflow","build and deploy apps with AWS Amplify","Build and deploy full-stack web and mobile apps with AWS Amplify Gen2 (TypeScript code-first). Covers auth (Cognito), data (AppSync\u002FDynamoDB including schema modeling, enum types, relationships, authorization rules), storage (S3), functions, APIs, and AI (Amplify AI Kit with Bedrock). Supports React, Next.js, Vue, Angular, React Native, Flutter, Swift, and Android. Always use this skill for Amplify Gen2 topics — even for questions you think you know — it contains validated, version-specific patterns that prevent common mistakes. TRIGGER when: user mentions Amplify Gen2; project has amplify\u002F directory or amplify_outputs; code imports @aws-amplify packages; user asks about defineBackend, defineAuth, defineData, defineStorage, or npx ampx. SKIP: Amplify Gen1 (amplify CLI v6), standalone SAM\u002FCDK without Amplify (use aws-serverless), direct Bedrock without Amplify AI Kit (use bedrock).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1914,1917,1918,1919,1922],{"name":1915,"slug":1916,"type":16},"Auth","auth",{"name":1717,"slug":32,"type":16},{"name":1742,"slug":1743,"type":16},{"name":1920,"slug":1921,"type":16},"Deployment","deployment",{"name":1923,"slug":1924,"type":16},"TypeScript","typescript","2026-07-12T08:39:43.500162",{"slug":1927,"name":1927,"fn":1928,"description":1929,"org":1930,"tags":1931,"stars":23,"repoUrl":24,"updatedAt":1937},"api-gateway","build and manage Amazon API Gateway APIs","Build, manage, and operate APIs with Amazon API Gateway (REST, HTTP, and WebSocket). Triggers on phrases like: API Gateway, REST API, HTTP API, WebSocket API, custom domain, Lambda authorizer, usage plan, throttling, CORS, VPC link, private API. Also covers troubleshooting API Gateway errors (4xx, 5xx, timeout, CORS failures) and IaC templates containing API Gateway resources. For general REST API design unrelated to AWS, do not trigger.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1932,1933,1934],{"name":1898,"slug":1899,"type":16},{"name":1717,"slug":32,"type":16},{"name":1935,"slug":1936,"type":16},"REST API","rest-api","2026-07-12T08:39:00.149339",{"slug":1039,"name":1039,"fn":1939,"description":1940,"org":1941,"tags":1942,"stars":23,"repoUrl":24,"updatedAt":1952},"generate AWS architecture diagrams","Generate validated AWS architecture diagrams as draw.io XML using official AWS4 icon libraries. Use this skill whenever the user wants to create, generate, or design AWS architecture diagrams, cloud infrastructure diagrams, or system design visuals. Also triggers for requests to visualize existing infrastructure from CloudFormation, CDK, or Terraform code. Supports two modes: analyze an existing codebase to auto-generate diagrams, or brainstorm interactively from scratch. Exports .drawio files with optional PNG\u002FSVG\u002FPDF export via draw.io desktop CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1943,1945,1946,1949],{"name":1173,"slug":1944,"type":16},"architecture",{"name":1717,"slug":32,"type":16},{"name":1947,"slug":1948,"type":16},"Design","design",{"name":1950,"slug":1951,"type":16},"Diagrams","diagrams","2026-07-12T08:37:11.012278",{"slug":1954,"name":1954,"fn":1955,"description":1956,"org":1957,"tags":1958,"stars":23,"repoUrl":24,"updatedAt":1963},"aws-lambda","build and deploy AWS Lambda functions","Design, build, deploy, test, and debug serverless applications with AWS Lambda. Triggers on phrases like: Lambda function, event source, serverless application, API Gateway, EventBridge, Step Functions, serverless API, event-driven architecture, Lambda trigger. For deploying non-serverless apps to AWS, use deploy-on-aws plugin instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1959,1960,1961,1962],{"name":1898,"slug":1899,"type":16},{"name":1717,"slug":32,"type":16},{"name":1920,"slug":1921,"type":16},{"name":1745,"slug":1746,"type":16},"2026-07-12T08:38:58.598492",{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":1968,"tags":1969,"stars":23,"repoUrl":24,"updatedAt":1973},"aws-lambda-durable-functions","build resilient AWS Lambda durable functions","Build resilient, long-running, multi-step applications with AWS Lambda durable functions with automatic state persistence, retry logic, and orchestration for long-running executions. Covers the critical replay model, step operations, wait\u002Fcallback patterns, error handling with saga pattern, testing with LocalDurableTestRunner. Triggers on phrases like: lambda durable functions, workflow orchestration, state machines, retry\u002Fcheckpoint patterns, long-running stateful Lambda functions, saga pattern, human-in-the-loop callbacks, and reliable serverless applications.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1970,1971,1972],{"name":1173,"slug":1944,"type":16},{"name":1717,"slug":32,"type":16},{"name":1745,"slug":1746,"type":16},"2026-07-12T08:39:05.546173",{"slug":1975,"name":1975,"fn":1976,"description":1977,"org":1978,"tags":1979,"stars":23,"repoUrl":24,"updatedAt":1988},"aws-lambda-managed-instances","configure AWS Lambda Managed Instances","Evaluate, configure, and migrate workloads to AWS Lambda Managed Instances (LMI). Triggers on: Lambda Managed Instances, LMI, capacity provider, multi-concurrency Lambda, dedicated instance Lambda, EC2-backed Lambda, cold start elimination, Graviton Lambda, instance type for Lambda, scheduled scaling for LMI, Lambda cost optimization with Reserved Instances or Savings Plans. Also trigger when users describe high-volume predictable workloads seeking cost savings, want to scale LMI capacity on a schedule, or compare Lambda vs EC2 for steady-state traffic. For standard Lambda without LMI, use the aws-lambda skill instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1980,1981,1982,1985],{"name":1717,"slug":32,"type":16},{"name":1920,"slug":1921,"type":16},{"name":1983,"slug":1984,"type":16},"Infrastructure","infrastructure",{"name":1986,"slug":1987,"type":16},"Performance","performance","2026-07-12T08:39:07.007071",33]