Agent skill

Pick Integ

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

Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits.

Apache-2.0Auto-check passedTesting & QA

Install Pick Integ

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

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

GitHub CLI
$ gh skill install go-to-k/cdkd pick-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/pick-integ .claude/skills/pick-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
pick-integ
GitHub stars
146
Token cost
~2.6k tokens
SKILL.md length
934 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits.

  • Works in 2 steps: Ledger… → Recent changes: git diff ...HEAD…
  • Tasks that involve Integration testing
  • SKILL.md covers Inputs, Data sources, Steps and Running a large plan across…, plus 1 more section
  • Calls git and aws

What it does

Pick Integ is an agent skill from go-to-k/cdkd. Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits. Outputs a prioritized list of /run-integ <name commands. Use before a release, after a batch of merges, or when unsure what integ coverage a change needs.

Its SKILL.md is about 2.6k 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. 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

Example prompts

  • “/pick-integ”

Workflow steps

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

  1. Ledger docs/_generated/integ-last-run.tsv (committed, one row per
  2. Recent changes: git diff ...HEAD --name-only, mapped to

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:

    • git
    • aws

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

  • Network

    No URLs in SKILL.md. Its commands use git and aws, 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 no API keys, tokens, secrets or passwords.

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

Context cost

Pick Integ loads about 2.6k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 934 words of instructions outside code blocks.

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

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). 934 words, ~2,624 tokens.

Download SKILL.mdSave it as .claude/skills/pick-integ/SKILL.md (or your agent's skills folder).
name
pick-integ
description
Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits. Outputs a prioritized list of `/run-integ <name>` commands. Use before a release, after a batch of merges, or when unsure what integ coverage a change needs.
argument-hint
[base-ref] (default: origin/main)

Integ Test Picker

Decide which integration tests to run right now, ranked by two signals: how stale the last run is (from the committed ledger) and whether recent changes touch the area a test exercises. It RECOMMENDS only; the orchestrator runs the chosen tests via /run-integ.

The ranking is a running ORDER, not a budget (AGENTS.md → "Cost is not a tiebreaker"): when several tests plausibly cover the touched code, run all of them, and prefer a broad-set fixture whenever the change is cross-cutting. Priorities decide what runs FIRST; a plan too long for one session is handed forward per "Running a large plan across sessions" — never silently truncated, and the wrap-up names exactly which tests were not run.

Inputs

  • Optional positional base-ref (default origin/main): the diff base. Use the last release tag when picking post-merge; origin/main for a branch.

Data sources

  1. Ledger docs/_generated/integ-last-run.tsv (committed, one row per test; written by /run-integ on every run):

    • Stale: age > the integ-destroy gate TTL (14 days) — past that the marker expires, so a clean result no longer proves today's AWS behavior.
    • Expiring soon: age 12–14d. The ledger accumulates in sweep-shaped cohorts (one sweep stamps many rows with one timestamp), so a strict >14d boolean answers "nothing" or "everything" — always report this tier.
    • Failing: result == FAIL — always a candidate.
    • Never-run: a fixture directory with NO ledger row — highest staleness.
  2. Recent changes: git diff <base-ref>...HEAD --name-only, mapped to tests via the table below.

Steps

  1. Discover the universe + ledger state:

    bash
    LEDGER="docs/_generated/integ-last-run.tsv"
    now=$(date -u +%s)
    # Union-merge can leave duplicate rows — LAST row per test wins. The
    # header is MULTIPLE `#` lines; skip them all (a single NR==1 guard let
    # later header lines through as phantom stale rows).
    DEDUPED="$(mktemp)"
    awk -F'\t' '/^#/{next} {last[$1]=$0} END{for (t in last) print last[t]}' "$LEDGER" > "$DEDUPED"
    # never-run: fixtures with no ledger row
    comm -23 \
      <(ls -d tests/integration/*/ | sed 's#tests/integration/##;s#/##' | sort) \
      <(awk -F'\t' '{print $1}' "$DEDUPED" | sort)
    # resolve each row's age ONCE, then slice for the views below.
    AGES="$(mktemp)"
    awk -F'\t' -v now="$now" '{
      cmd="date -u -j -f %Y-%m-%dT%H:%M:%SZ \""$2"\" +%s 2>/dev/null || date -u -d \""$2"\" +%s 2>/dev/null";
      cmd | getline t; close(cmd);
      printf "%s\t%d\t%s\t%s\n",$1,int((now-t)/86400),$3,$6
    }' "$DEDUPED" > "$AGES"
    
    # age histogram — makes a clustered cohort visible even when NOTHING is >14d
    awk -F'\t' '{print $2}' "$AGES" | sort -n | uniq -c |
      awk '{printf "%6d tests at age %sd%s\n",$1,$2,($2>14?"   <-- STALE":($2>=12?"   <-- crosses the TTL in "(15-$2)"d":""))}'
    
    # stale (>14d) or failing:
    awk -F'\t' '$3=="FAIL" || $2>14 {printf "%s\tage=%sd\tresult=%s\t%s\n",$1,$2,$3,$4}' "$AGES"
    
    # expiring soon (12-14d, not already failing) — the cliff cohort:
    awk -F'\t' '$2>=12 && $2<=14 && $3!="FAIL" {printf "%s\tage=%sd\texpires in %dd\n",$1,$2,15-$2}' "$AGES"
    
    # one-line cliff summary for the step 4 header:
    awk -F'\t' '$2>=12 && $2<=14 {n[15-$2]++} END{for (d in n) printf "%d\t%d tests expire in %dd\n",d,n[d],d}' "$AGES" |
      sort -n | cut -f2-

    (The date line handles both BSD/macOS -j -f and GNU -d.)

  2. Map recent changes to tests (a changed path pulls in the listed tests; when in doubt, include the broad set):

    Changed pathInteg tests to run
    src/deployment/deploy-engine.ts (and deploy-engine/*.ts, deploy-value-equality.ts, label-routing.ts, split out of it), src/deployment/intrinsic-function-resolver.ts (and the intrinsic-resolver/*.ts modules split out of it), src/deployment/retry.ts, src/deployment/retryable-errors.ts (and retryable-errors/*.ts), src/deployment/rollback-executor.ts (and rollback-executor/*.ts), src/analyzer/dag-builder.ts, src/analyzer/template-parser.ts, src/cli/commands/{deploy,destroy,destroy-runner}.ts, src/provisioning/{provider-registry,register-providers}.tsBROAD set (bench-cdk-sample, lambda, microservices, multi-resource, multi-stack-deps, drift-revert, drift-revert-vpc, remove-protection, export) — cross-cutting deploy/destroy. Also cross-stack-references for any cross-stack/exports change.
    src/state/**, src/state/export-index-store.tsschema-v<N>-to-v<N+1>-migration (latest), cross-stack-references, import-value-strong-ref
    src/provisioning/providers/<Svc>*the matching service integ (iam-managed-policy, dynamodb-*, s3-*, rds-*, kms-encryption, stepfunctions, eventbridge, sns-sqs-event, cognito, wafv2, route53, …). Custom Resource changes → custom-resource-provider.
    src/provisioning/cloud-control-provider.tscc-api-fallback, cc-api-fallback-transitions, recreate-via-cc-api
    src/local/**, src/cli/commands/local-*.tsthe matching local-* test; a cross-cutting src/local/ change → at least local-invoke + local-start-api.
    src/cli/commands/{export,import,retire-cfn-stack}*export, export-nested-stack, migrate-from-cfn, import-nested-stack, import-value-strong-ref
    src/synthesis/macro-*macro-expansion
    package.json (cdk-local bump)local-* cluster (the bump's blast radius)

    Mark every name an agent session cannot run, and offer a substitute. A fixture drives itself from verify.sh, or from run.sh invoked directly; with neither, /run-integ falls back to a flow needing a bare cdkd deploy, which the harness refuses — legal only when a human drives the shell. Such a name is a MAINTAINER-only recommendation, never a lane's. Several BROAD-set entries are in this state, so derive the split rather than recalling it:

    bash
    for t in NAME1 NAME2; do   # the names about to be recommended
      d=<LANE_TREE>/tests/integration/$t
      [ -f "$d/verify.sh" ] || [ -f "$d/run.sh" ] || echo "MAINTAINER-ONLY: $t"
    done
  3. Rank the union of {changed-area} ∪ {failing} ∪ {stale >14d} ∪ {expiring soon} ∪ {never-run}:

    • P0: changed-area AND (stale OR failing OR never-run).
    • P1: changed-area but recently-green — verify no regression.
    • P2: not changed-area but stale / failing / never-run / expiring soon — coverage hygiene. Prefer the BROAD set plus a spread of providers, and ORDER them rather than capping: a long tail is handed forward, and whatever is not run is named in the wrap-up. An expiring-soon test ranks below an already-stale one and above a recently-green one; within a tier, oldest first. Bias up for AWS-coupled, deletion-sensitive, multi-resource paths; pure docs / test / skill changes often need NO integ.
  4. Render the plan:

    Recommendation: run N integ tests (P0: ..., P1: ..., P2: ...)
    Base: <base-ref> (<changed-file-count> files changed)
    Ledger: <count> stale (>14d), <count> failing, <count> never-run,
            <count> expiring soon (12-14d) — <N> tests expire in <M>d
    Age histogram:
      <the uniq -c output from step 1, cliff rows annotated>
    
    P0 (changed + stale/failing/never-run):
      /run-integ <name>    # <why: which changed path + age/result>
    P1 (changed, recently green):
      /run-integ <name>    # verify no regression in <area>
    P2 (coverage hygiene):
      /run-integ <name>    # stale <age>d / expires in <M>d / never-run
    
    Not scheduled this pass (recently green + untouched): <count> tests — list a few.
    (A count, not a cap: these are DEPRIORITIZED, not excluded.)

    Never render "zero stale" on its own — if a cohort sits at 12–14d, the headline is the cliff ("0 stale, but 105 tests expire in 1d").

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

Running a large plan across sessions

A large plan may span sessions. Treat it as a relay whose hand-off points are batch boundaries:

  • Batches of ~4–5 tests. After EACH batch: (a) verify the account is orphan-clean (aws s3 ls s3://<bucket>/cdkd/ --recursive | grep state.json returns 0; no live NAT / RDS / OpenSearch / Redshift / ElastiCache / EC2), (b) commit the ledger.
  • A backgrounded batch loop can have a test's subshell die between deploy and destroy, leaving a full orphan (a NAT GW included) — the post-batch state scan is what catches it, and the orphan's stack NAME often differs from the fixture directory (read it from the deploy log or synth).
  • Stop only at a batch boundary: commit the ledger, report "ran N more (list), account clean, ~M remain", and leave a memory with the remaining list and findings.
  • The sweep is DONE only when /pick-integ shows no stale tests left; the committed ledger is the source of truth.
  • A FAIL that never reached the fixture's assertions is not a cdkd bug — open the log before recording it. Two classes: fixture staleness (AWS retired an engine / instance tier the fixture hardcodes), and a fixture whose own previous run blocks the next because it pins a name AWS holds a cooldown on (export recreates one FIXED S3 bucket, and S3's same-name cooldown of up to ~58 min answers OperationAborted before phase 1). Record it as such and queue the fixture fix. A run whose only purpose is to refresh the integ-destroy marker takes a SIBLING from the broad set instead; the SWEEP does not — the FAIL row keeps it a candidate, so re-schedule it after the window rather than counting it covered.

Important

  • Tests run serially — one AWS account; mind VPC / EIP / NAT limits.
  • The ledger is only as good as its discipline; treat an absent or impossibly-old row as stale.
  • "Recently green + untouched" tests are scheduled LAST, not dropped — surface the count either way.
  • Pure docs / .claude/skills / test-only diffs usually need NO integ; say so rather than padding the list.

© 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/pick-integ of go-to-k/cdkd.

Open the folder on GitHubat commit aefb343

Compare with similar skills

Pick 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.

Pick Integ compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pick Integ this skillgo-to-k/cdkd146—~2.6kAutomated safety check: PassApache-2.0
New Event Sourceaws/aws-lambda-dotnet1.7k—~3kAutomated safety check: PassApache-2.0
Review Testshashicorp/terraform-provider-aws11k—~908Automated safety check: PassMPL-2.0
Review Tests Helpershashicorp/terraform-provider-aws11k—~994Automated safety check: PassMPL-2.0
Extend Commands APIredis/lettuce5.8k—~7.7kAutomated safety check: NotesMIT
AWS Cdk Developmentzxkane/aws-skills3672 repos~2.5kAutomated 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 today
    Testing & QAAuto-check passed
  • Review Tests

    hashicorp/terraform-provider-aws

    Official

    Review Terraform AWS Provider acceptance and unit test basics: required basic and disappears tests, TestAcc naming, TestCase essentials (PreCheck/ErrorCheck/ProtoV5ProviderFactories/CheckDestroy)…

    11k GitHub stars~908 tokensUpdated today
    Testing & QAAuto-check passed
  • Review Tests Helpers

    hashicorp/terraform-provider-aws

    Official

    Review Terraform AWS Provider test helpers: Exists/Destroy check functions, exportstest.go wiring, create.Error wrapping, data source tests, list resource tests (querycheck + Terraform version…

    11k GitHub stars~994 tokensUpdated today
    Testing & QAAuto-check passed
  • Extend Commands API

    redis/lettuce

    Official

    Add or extend Redis commands in the Lettuce client API end-to-end — a new core command, a family of new commands, an extension to an existing command's options, or a module/area command…

    5.8k GitHub stars~7.7k tokensUpdated today
    DatabasesAuto-check: notes
  • AWS Cdk Development

    zxkane/aws-skills

    AWS Cloud Development Kit (CDK) expert for building cloud infrastructure with TypeScript/Python.

    367 GitHub starsUsed in 2 repos~2.5k tokens
    DevOps & CloudAuto-check passed
  • AWS Cloud Advisor

    tech-leads-club/agent-skills

    Answers AWS architecture, security and service-selection questions by searching AWS documentation through MCP tools first, then adapting advice to your stack and team.

    7k GitHub stars~2.1k tokensUpdated today
    DevOps & CloudAuto-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 Pick Integ

What does Pick Integ do?

Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits. Pick Integ is an agent skill from go-to-k/cdkd. Recommend which integration tests to run, based on the integ ledger (staleness / last result) plus the code areas touched by recent commits.

When should I use Pick Integ?

Pick Integ fits situations like: tasks that involve Integration testing.

How do I install Pick Integ in Claude Code?

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

How do I install Pick Integ in Codex?

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

Can I use Pick 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 pick-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/pick-integ, .gemini/skills/pick-integ, .github/skills/pick-integ and .opencode/skills/pick-integ in your project.

What does Pick Integ need to run?

Going by SKILL.md and its folder, Pick Integ needs the command-line tools its instructions call (git and aws).

Does Pick Integ access the network?

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

Is Pick 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 Pick Integ use?

Pick 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 Pick Integ use?

About 2.6k tokens (SKILL.md is roughly 10k 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 Pick Integ?

Skills that share tags, products or a category with Pick Integ: New Event Source (aws/aws-lambda-dotnet, 1.7k stars), Review Tests (hashicorp/terraform-provider-aws, 11k stars), Review Tests Helpers (hashicorp/terraform-provider-aws, 11k stars) and Extend Commands API (redis/lettuce, 5.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pick 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.