Agent skill

New Integ

by go-to-k in go-to-k/cdkd

Scaffold a new integration test for cdkd. An agent skill from go-to-k/cdkd.

Apache-2.0Auto-check passedTesting & QA

Install New Integ

skills CLI
$ npx skills add go-to-k/cdkd --skill new-integ -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install go-to-k/cdkd new-integ --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/new-integ .claude/skills/new-integ && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
new-integ
GitHub stars
146
Token cost
~2.7k tokens
SKILL.md length
1,248 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Scaffold a new integration test for cdkd. An agent skill from go-to-k/cdkd.

  • Works in 9 steps: Build cdkd first: vp run build from the… → Check the test does not already exist in… → Read a recent fixture as the reference… → …
  • Tasks that involve Integration testing
  • SKILL.md covers Input, Steps and Important
  • Calls node, aws and npm; needs STATE_KEY

What it does

New Integ is an agent skill from go-to-k/cdkd. Scaffold a new integration test for cdkd. Creates a minimal CDK app with the specified AWS resources for deploy/destroy E2E testing.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Integration testing and End-to-end testing. It works with Amazon Web Services and AWS CloudFormation. The repository describes itself as: Drop-in CDK CLI for existing CDK apps — up to 15x faster deploys via direct AWS SDK calls instead of CloudFormation. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Integration testing
  • Tasks that involve End-to-end testing

Example prompts

  • “/new-integ”

Requirements

  • Node.js
  • A credential in STATE_KEY

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Build cdkd first: vp run build from the repo root — verify.sh and the
  2. Check the test does not already exist in tests/integration//,
  3. Read a recent fixture as the reference shape. Use
  4. Create the test directory at tests/integration// with these
  5. Ask the user what specific AWS resources the test should create, if not
  6. Write a verify.sh (the most important deliverable — a deploy-only smoke
  7. Regenerate the coverage matrices (adding/removing a Construct changes
  8. Install deps + verify synthesis
  9. Run the full test with /run-integ (deploy + functional +

What it can do on your machine

Read from SKILL.md and the folder at commit aefb343. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • aws
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use aws and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • STATE_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

New Integ loads about 2.7k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 1,248 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from go-to-k/cdkd at commit aefb343, republished under its Apache-2.0 licence (© go-to-k). 1,248 words, ~2,673 tokens.

Download SKILL.mdSave it as .claude/skills/new-integ/SKILL.md (or your agent's skills folder).
name
new-integ
description
Scaffold a new integration test for cdkd. Creates a minimal CDK app with the specified AWS resources for deploy/destroy E2E testing.
argument-hint
<test-name>

New Integration Test Scaffold

You are scaffolding a new integration test for cdkd.

Input

The user provides a kebab-case test name (e.g., ses-email-identity, s3-event-notification).

Steps

  1. Build cdkd first: vp run build from the repo root — verify.sh and the synth check both run against dist/cli.js, so source changes without a build have no effect.

  2. Check the test does not already exist in tests/integration/<test-name>/, AND that an existing fixture does not already cover the pattern. Grep for the construct/resource type across tests/integration/*/lib before building — a fixture that already deploys the thing (even without a verify.sh) means the higher-value move is often to ADD a functional verify.sh to it rather than a whole new fixture.

  3. Read a recent fixture as the reference shape. Use tests/integration/dynamodb-gsi-update/ (deploy + UPDATE + destroy with real assertions) or tests/integration/s3-event-notification/ (functional check) — NOT the oldest ones, whose conventions have drifted.

  4. Create the test directory at tests/integration/<test-name>/ with these files. The project runs CDK apps via Node 24 type-stripping (node bin/app.ts), so the fixture is ESM ("type": "module") and imports carry the .ts extension — there is NO ts-node / tsx dependency.

    cdk.json:

    json
    {
      "app": "node bin/app.ts"
    }

    package.json (note "type": "module"; no ts-node):

    json
    {
      "name": "cdkd-integ-<test-name>",
      "version": "1.0.0",
      "private": true,
      "description": "<one-line description>",
      "scripts": { "build": "tsc", "watch": "tsc -w" },
      "devDependencies": {
        "@types/node": "^20.0.0",
        "aws-cdk": "^2.1112.0",
        "typescript": "^5.0.0"
      },
      "dependencies": {
        "aws-cdk-lib": "^2.260.0",
        "constructs": "^10.0.0"
      },
      "type": "module"
    }

    That aws-cdk-lib floor is FENCED and is read from this file: it may not sit below the lowest floor in tests/integration/*/package.json, or tests/unit/scripts/integ-cdk-lib-floor.test.ts reds CI (issue #2839). Raising it is always safe; lowering it, or letting it stay put while the corpus moves past it, reds CI. The rule, and why it is not an equality fence, is in .claude/rules/testing.md.

    tsconfig.json — copy it verbatim from the reference fixture chosen in step 3 (tests/integration/dynamodb-gsi-update/tsconfig.json). It is ESNext / NodeNext with rewriteRelativeImportExtensions: true, which is what makes the .ts-suffixed relative imports type-check; do not hand-write a shorter one.

    bin/app.ts — the entry point, copied from the reference fixture. It imports the stack WITH the .ts extension, names it Cdkd<PascalCaseName>Example, and wires env from CDK_DEFAULT_ACCOUNT / CDK_DEFAULT_REGION.

    lib/<test-name>-stack.ts — the stack. Keep it minimal: only the resource under test + its required dependencies. In the class docstring, add a covers: AWS::Service::Type line for each resource type the test is meant to cover (the coverage matrix in step 7 parses these annotations).

  5. Ask the user what specific AWS resources the test should create, if not obvious from the test name.

  6. Write a verify.sh (the most important deliverable — a deploy-only smoke test is NOT enough). Model it on tests/integration/dynamodb-gsi-update/verify.sh. It must:

    • set -euo pipefail, cd "$(dirname "$0")", and define STACK, REGION (${AWS_REGION:-us-east-1}), STATE_KEY, and LOCAL_DIST="$(cd ../../../dist && pwd)/cli.js".

    • Require STATE_BUCKET (fail fast if unset) and the built dist/cli.js.

    • Define a cleanup() and arm it on EXIT and both signals; run it once up-front as a pre-run cleanup:

      bash
      trap cleanup EXIT
      trap '(exit 130); cleanup; exit 130' INT
      trap '(exit 143); cleanup; exit 143' TERM

      trap cleanup EXIT INT TERM is NOT equivalent and must never be used — a bash signal handler returns to the interrupted point, so the script resumes the interrupted phase and can exit 0, reporting PASS while resources leak. The (exit N) seed is also load-bearing: inside a handler $? is the interrupted command's status, so a cleanup opening with rc=$? would otherwise see 0 and skip teardown. Disarm with trap - EXIT INT TERM. Enforced by tests/unit/scripts/integ-verify-signal-traps.test.ts (#1097).

      cleanup must node "${LOCAL_DIST}" state destroy, delete the AWS resources by deterministic name, remove the state.json + lock.json, and sweep /aws/lambda/${STACK}* log groups (Lambda auto-creates them on invoke and neither CFn nor cdkd deletes them — leaving them counts as an orphan). Any sweep that DELETES what a ${VAR}-filtered listing returns needs a scope guard that DOMINATES it — either the sweep sits inside the non-catch-all arm, or it sits after an esac whose catch-all leaves via exit / return; a case that merely warns and falls through stops nothing. An empty variable makes the filter match everything, cleanup runs under set +eu, and every delete is || true, so the run would wipe unrelated resources and still exit 0. Accepting arm first, a pattern that cannot match empty, and a WARN containing teardown sweep refused. Write YOUR OWN scope's shortest literal prefix plus ?* — Cdkd?* is what the already-guarded fixtures happen to need and is NOT a house pattern. Plenty of fixtures use a stack name that does not start with Cdkd (EventBridgeStack, CognitoStack, ...), and copying Cdkd?* into one of those makes the guard refuse PERMANENTLY and silently, so the sweep never runs, the orphans leak and the run still exits 0. See docs/integ-fixture-conventions.md. Convention only — nothing checks it yet.

    • Phase 1 — deploy, then a functional assertion that the feature actually works and reached AWS (curl the endpoint / put an object and confirm the handler fired / read the property back via the AWS API). A clean deploy summary is not proof.

    • Phase 2 — UPDATE when the resource has a meaningful in-place change (gate the stack on process.env.CDKD_TEST_UPDATE === 'true'). Set the env PER-PHASE: Phase 1 baseline via env -u CDKD_TEST_UPDATE node ... deploy, Phase 2 via inline CDKD_TEST_UPDATE=true node ... deploy. Never gate the whole phase on a caller-set global env. Assert the change reached AWS AND that it was in-place, not a replacement (e.g. an identity field like DynamoDB CreationDateTime is unchanged).

    • Final phase — destroy (--force), then assert the resource is gone, the state.json is gone, and sweep the log groups again. Gone-assertions MUST go through the canonical gone_probe / assert_gone helper block (copy it verbatim from any swept fixture, e.g. tests/integration/dynamodb-gsi-update/verify.sh; source of truth in scripts/check-integ-probe-not-found.ts), inserted right after set -euo pipefail:

      bash
      assert_gone "resource <name> still exists after destroy" aws <service> <read-verb> [args...]
      assert_gone "state file ${STATE_KEY} still exists after destroy" aws s3api head-object --bucket "${STATE_BUCKET}" --key "${STATE_KEY}"

      Never write if aws <read-probe> ... >/dev/null 2>&1; then FAIL (or the inverse if ! aws ...; then <gone>): a throttled probe would silently pass the leak check (issue #1097 pattern 2). The same goes for the capture-form spelling N=$(aws <read-verb> ... 2>/dev/null || echo 0) (|| true included) and for silenced probe wrappers (fn() { aws ... >/dev/null 2>&1; }) — use plain strict captures, or a gone_probe branch when not-found is a legitimate outcome (issue #1120). In a multi-statement value wrapper, append || return 1 to every INTERMEDIATE out="$(aws ...)" capture (errexit is cleared inside $( ), so only the last command's status propagates otherwise), and write best-effort cleanup helpers as fn() { ( set +eu; ... ) } so they never re-arm strict mode in a set +eu caller. Use s3api head-object for state files, never aws s3 ls (exit 1 + empty output for "no keys" is indistinguishable from a silenced error). Enforced by tests/unit/scripts/integ-verify-probe-not-found.test.ts.

    • End with a single echo "[verify] PASS — ..." line (the run-integ harness greps for it).

    • chmod +x verify.sh.

  7. Regenerate the coverage matrices (adding/removing a Construct changes them, and CI hard-fails on a stale matrix):

    bash
    vp run gen:all-matrices && vp run format

    Commit the regenerated docs/_generated/*.json alongside the fixture.

  8. Install deps + verify synthesis:

    bash
    cd tests/integration/<test-name> && npm install
    node ../../../dist/cli.js synth --region us-east-1
  9. Run the full test with /run-integ <test-name> (deploy + functional + destroy + orphan-zero verification against real AWS). A fixture that has never passed /run-integ is worse than no fixture — never commit one unrun.

Show full SKILL.md (107 more words)Show less

Important

  • Keep tests minimal — only the resources needed to verify the behavior.
  • English only — this is an OSS repo; no Japanese characters in any committed file (code, comments, shell scripts, READMEs).
  • Do NOT include stateBucket in cdk.json context (let the CLI resolve it).
  • Use RemovalPolicy.DESTROY (and autoDeleteObjects: true on buckets) so teardown is clean.
  • Prefer lambda.Code.fromInline(...) for handlers — no asset bundling needed, and @aws-sdk/client-* is already in the Node.js 20 runtime.
  • Stack id convention: Cdkd<PascalCaseName>Example (matches the STACK var in verify.sh). Some older fixtures use <PascalCaseName>Stack; follow the Cdkd...Example form for new tests.
  • Do NOT commit node_modules/, package-lock.json, cdk.out/, or build output (*.js / *.d.ts) — tests/integration/.gitignore covers them.

© go-to-k, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/new-integ of go-to-k/cdkd.

Open the folder on GitHubat commit aefb343

Compare with similar skills

New Integ next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

New Integ compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
New Integ this skillgo-to-k/cdkd146—~2.7kAutomated safety check: PassApache-2.0
New Event Sourceaws/aws-lambda-dotnet1.7k—~3kAutomated safety check: PassApache-2.0
OpenHarness End-to-End EvalsHKUDS/OpenHarness16k1 repos~2.1kAutomated safety check: NotesMIT
E2E Testinglangflow-ai/langflow155k—~3.3kAutomated safety check: PassMIT
MongoDB Source Connector E2E Harnessairbytehq/airbyte22k—~1.9kAutomated safety check: PassCustom licence
Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk11k—~1.8kAutomated safety check: PassMIT

Similar skills

  • New Event Source

    aws/aws-lambda-dotnet

    Official

    Add a new AWS event source attribute (e.g., Kinesis, Kafka, MQ) to the Lambda .NET Annotations framework, including the attribute class, source generator integration, CloudFormation writer, unit…

    1.7k GitHub stars~3k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.

    16k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check: notes
  • E2E Testing

    langflow-ai/langflow

    Write and review Playwright E2E tests for Langflow. An agent skill from langflow-ai/langflow.

    155k GitHub stars~3.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Starts a throwaway MongoDB 7.0 replica set and runs the Airbyte spec, check, discover and read commands against source-mongodb-v2 images for local end-to-end testing.

    22k GitHub stars~1.9k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Creates a Java SDK end-to-end test for the Copilot SDK that runs against a recorded YAML snapshot through a replay proxy, so CI needs no real authentication.

    11k GitHub stars~1.8k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Explains how to run go-redis tests: the Docker Compose stack, make targets, focusing a single Ginkgo spec, the e2e suite and the version environment variables.

    22k GitHub stars~786 tokensUpdated yesterday
    Testing & QAAuto-check passed

More from go-to-k/cdkd

All 14 skills in this repo
  • Hunt Bugs

    go-to-k/cdkd

    Proactively hunt for cdkd bugs by deploying real CDK apps that exercise common-but-untested AWS resources, configs, and CloudFormation notations against real AWS, then fix what breaks.

    146 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Use Cdkd

    go-to-k/cdkd

    Build the current cdkd checkout and use it from another CDK project.

    146 GitHub stars~669 tokensUpdated today
    Auto-check passed
  • Verify PR

    go-to-k/cdkd

    Comprehensive PR readiness check before merge. An agent skill from go-to-k/cdkd.

    146 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Work Issues

    go-to-k/cdkd

    Work through already-filed GitHub issues (typically the bug-hunt's output) end to end — triage safely, pick as many FILE-DISJOINT issues as the run can carry, claim each on the issue before starting…

    146 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Cdkd

    go-to-k/cdkd

    Install cdkd and use it safely from an AWS CDK project. An agent skill from go-to-k/cdkd.

    146 GitHub stars~7k tokensUpdated today
    Auto-check: notes
  • Run Integ

    go-to-k/cdkd

    Run integration tests (deploy + destroy) against real AWS. An agent skill from go-to-k/cdkd.

    146 GitHub stars~5.8k tokensUpdated today
    Auto-check passed

Categories

Questions about New Integ

What does New Integ do?

Scaffold a new integration test for cdkd. An agent skill from go-to-k/cdkd. New Integ is an agent skill from go-to-k/cdkd. Scaffold a new integration test for cdkd.

When should I use New Integ?

New Integ fits situations like: tasks that involve Integration testing; tasks that involve End-to-end testing.

How do I install New Integ in Claude Code?

Run `npx skills add go-to-k/cdkd --skill new-integ -a claude-code`. Or copy the skill folder (.claude/skills/new-integ in go-to-k/cdkd) into .claude/skills/new-integ in your project. Claude Code loads it when a task matches its description.

How do I install New Integ in Codex?

Run `npx skills add go-to-k/cdkd --skill new-integ -a codex`. Or copy the skill folder (.claude/skills/new-integ in go-to-k/cdkd) into .agents/skills/new-integ in your project. Codex loads it when a task matches its description.

Can I use New Integ in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add go-to-k/cdkd --skill new-integ -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/new-integ, .gemini/skills/new-integ, .github/skills/new-integ and .opencode/skills/new-integ in your project.

What does New Integ need to run?

Going by SKILL.md and its folder, New Integ needs the command-line tools its instructions call (node, aws and npm) and credentials named STATE_KEY. Our summary lists: Node.js; A credential in STATE_KEY.

Does New Integ access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is New Integ safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does New Integ use?

New Integ is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does New Integ use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to New Integ?

Skills that share tags, products or a category with New Integ: New Event Source (aws/aws-lambda-dotnet, 1.7k stars), OpenHarness End-to-End Evals (HKUDS/OpenHarness, 16k stars), E2E Testing (langflow-ai/langflow, 155k stars) and MongoDB Source Connector E2E Harness (airbytehq/airbyte, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains New Integ?

go-to-k (a GitHub user) maintains it in go-to-k/cdkd, which has 146 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 10, 2026.

Source: go-to-k/cdkd on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.