{"id":51098996,"url":"https://github.com/enomoto11/cdk-impact-analyzer","last_synced_at":"2026-06-24T09:02:00.355Z","repository":{"id":360236552,"uuid":"1249259922","full_name":"enomoto11/cdk-impact-analyzer","owner":"enomoto11","description":"GitHub Action that finds the AWS CDK stacks a pull request affects by tracing TypeScript symbol references.","archived":false,"fork":false,"pushed_at":"2026-05-25T15:16:40.000Z","size":3111,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T16:32:26.611Z","etag":null,"topics":["aws-cdk","cdk","cdk-diff","github-action","impact-analysis","pull-request","ts-morph","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enomoto11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-25T14:11:37.000Z","updated_at":"2026-05-25T15:14:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/enomoto11/cdk-impact-analyzer","commit_stats":null,"previous_names":["enomoto11/cdk-impact-analyzer"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/enomoto11/cdk-impact-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enomoto11%2Fcdk-impact-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enomoto11%2Fcdk-impact-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enomoto11%2Fcdk-impact-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enomoto11%2Fcdk-impact-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enomoto11","download_url":"https://codeload.github.com/enomoto11/cdk-impact-analyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enomoto11%2Fcdk-impact-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34724743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-cdk","cdk","cdk-diff","github-action","impact-analysis","pull-request","ts-morph","typescript"],"created_at":"2026-06-24T09:01:57.423Z","updated_at":"2026-06-24T09:02:00.346Z","avatar_url":"https://github.com/enomoto11.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cdk-impact-analyzer\n\n[![CI](https://github.com/enomoto11/cdk-impact-analyzer/actions/workflows/ci.yml/badge.svg)](https://github.com/enomoto11/cdk-impact-analyzer/actions/workflows/ci.yml)\n[![License](https://img.shields.io/github/license/enomoto11/cdk-impact-analyzer)](./LICENSE)\n[![GitHub Marketplace](https://img.shields.io/badge/marketplace-listing-blue?logo=github)](https://github.com/marketplace/actions/cdk-impact-analyzer)\n\nGitHub Action that reads a PR diff in an AWS CDK (TypeScript) repository and lists\nthe CDK stacks the change affects.\n\n## Why\n\nMost CDK teams run `cdk diff` and `cdk deploy` against a hand-picked subset of stacks\non each PR. A change to a shared construct or utility can affect stacks outside that\nsubset, and you ship those changes without review. Running every stack on every PR\ncloses the gap but slows the pipeline.\n\nFor each changed TypeScript symbol in the diff, `cdk-impact-analyzer` follows\nreferences up the call graph (via [ts-morph](https://github.com/dsherret/ts-morph))\nuntil it reaches a `new XxxStack(...)` instantiation. The union of those stack names\nis the output.\n\n## Scope\n\n- TypeScript CDK projects only.\n- Check out the target CDK repository before this action runs. If `project-path` has\n  no readable `cdk.json`, the action exits.\n- Other host languages (Python, Go, Java) would each need their own language-server\n  adapter, which this action does not provide.\n\n## Usage\n\n```yaml\nname: CDK Impact\n\non:\n  pull_request:\n\njobs:\n  analyze:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - uses: enomoto11/cdk-impact-analyzer@v1\n        id: impact\n        with:\n          pr-number: ${{ github.event.pull_request.number }}\n      - if: steps.impact.outputs.affected-stack-count != '0'\n        run: |\n          for stack in $(echo '${{ steps.impact.outputs.affected-stacks }}' | jq -r '.[]'); do\n            npx cdk diff \"$stack\"\n          done\n```\n\n`fetch-depth: 0` is required so the action can read both ends of the PR diff\nlocally.\n\nPass explicit refs instead of `pr-number` for push events or local dispatch:\n\n```yaml\n      - uses: enomoto11/cdk-impact-analyzer@v1\n        with:\n          base-ref: origin/main\n          head-ref: HEAD\n```\n\n## Inputs\n\nSee [`action.yml`](./action.yml). Pass either `pr-number`, or both `base-ref` and\n`head-ref`.\n\n## Outputs\n\n- `affected-stacks`: JSON array of stack names.\n- `affected-stack-count`: count, as a string.\n\n## Development\n\n```bash\npnpm install\npnpm typecheck\npnpm test\npnpm build         # bundles src/ into dist/ via @vercel/ncc\npnpm e2e:setup     # fetches the pinned aws-cdk-examples into .e2e-cache/\n```\n\nCommit `dist/`. GitHub Actions runs it as the action entry point.\n\n`e2e-fixtures.json` pins the aws-cdk-examples commit used by the e2e suite. Bump\nthe `sha` field and rerun `pnpm e2e:setup` to update.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenomoto11%2Fcdk-impact-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenomoto11%2Fcdk-impact-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenomoto11%2Fcdk-impact-analyzer/lists"}