New Event Source
aws/aws-lambda-dotnet
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…
Scaffold a new integration test for cdkd. An agent skill from go-to-k/cdkd.
$ npx skills add go-to-k/cdkd --skill new-integ -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install go-to-k/cdkd new-integ --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .claude/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add go-to-k/cdkd --skill new-integ -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install go-to-k/cdkd new-integ --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/new-integ .agents/skills/new-integ && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .agents/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add go-to-k/cdkd --skill new-integ -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install go-to-k/cdkd new-integ --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/new-integ .cursor/skills/new-integ && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .cursor/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/go-to-k/cdkd.git --path .claude/skills/new-integ--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add go-to-k/cdkd --skill new-integ -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install go-to-k/cdkd new-integ --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/new-integ .gemini/skills/new-integ && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .gemini/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install go-to-k/cdkd new-integInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add go-to-k/cdkd --skill new-integ -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/new-integ .github/skills/new-integ && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .github/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add go-to-k/cdkd --skill new-integ -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install go-to-k/cdkd new-integ --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/go-to-k/cdkd.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/new-integ .opencode/skills/new-integ && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "new-integ" agent skill from https://github.com/go-to-k/cdkd/tree/main/.claude/skills/new-integ into .opencode/skills/new-integ/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-integ", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
new-integScaffold 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. 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.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit aefb343. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
nodeawsnpmFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names these keys or tokens, usually read from environment variables:
STATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/new-integ/SKILL.md (or your agent's skills folder).You are scaffolding a new integration test for cdkd.
The user provides a kebab-case test name (e.g., ses-email-identity,
s3-event-notification).
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.
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.
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.
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:
{
"app": "node bin/app.ts"
}package.json (note "type": "module"; no ts-node):
{
"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).
Ask the user what specific AWS resources the test should create, if not obvious from the test name.
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:
trap cleanup EXIT
trap '(exit 130); cleanup; exit 130' INT
trap '(exit 143); cleanup; exit 143' TERMtrap 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:
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.
Regenerate the coverage matrices (adding/removing a Construct changes them, and CI hard-fails on a stale matrix):
vp run gen:all-matrices && vp run formatCommit the regenerated docs/_generated/*.json alongside the fixture.
Install deps + verify synthesis:
cd tests/integration/<test-name> && npm install
node ../../../dist/cli.js synth --region us-east-1Run 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.
stateBucket in cdk.json context (let the CLI resolve it).RemovalPolicy.DESTROY (and autoDeleteObjects: true on buckets) so
teardown is clean.lambda.Code.fromInline(...) for handlers — no asset bundling needed,
and @aws-sdk/client-* is already in the Node.js 20 runtime.Cdkd<PascalCaseName>Example (matches the STACK var in
verify.sh). Some older fixtures use <PascalCaseName>Stack; follow the
Cdkd...Example form for new tests.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
Just SKILL.md in .claude/skills/new-integ of go-to-k/cdkd.
Open the folder on GitHubat commit aefb343
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| New Integ this skillgo-to-k/cdkd | 146 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| New Event Sourceaws/aws-lambda-dotnet | 1.7k | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| OpenHarness End-to-End EvalsHKUDS/OpenHarness | 16k | 1 repos | ~2.1k | Automated safety check: Notes | MIT | |
| E2E Testinglangflow-ai/langflow | 155k | — | ~3.3k | Automated safety check: Pass | MIT | |
| MongoDB Source Connector E2E Harnessairbytehq/airbyte | 22k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk | 11k | — | ~1.8k | Automated safety check: Pass | MIT |
aws/aws-lambda-dotnet
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…
HKUDS/OpenHarness
Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.
langflow-ai/langflow
Write and review Playwright E2E tests for Langflow. An agent skill from langflow-ai/langflow.
airbytehq/airbyte
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.
github/copilot-sdk
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.
redis/go-redis
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.
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.
go-to-k/cdkd
Build the current cdkd checkout and use it from another CDK project.
go-to-k/cdkd
Comprehensive PR readiness check before merge. An agent skill from go-to-k/cdkd.
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…
go-to-k/cdkd
Install cdkd and use it safely from an AWS CDK project. An agent skill from go-to-k/cdkd.
go-to-k/cdkd
Run integration tests (deploy + destroy) against real AWS. An agent skill from go-to-k/cdkd.
Works with
Categories
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.
New Integ fits situations like: tasks that involve Integration testing; tasks that involve End-to-end testing.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.