Hyperpod Issue Report
awslabs/agent-plugins
Generate comprehensive issue reports from HyperPod clusters (EKS and Slurm) by collecting diagnostic logs and configurations for troubleshooting and AWS Support cases.
A skill your agent uses when deploying, updating, or syncing assets to the codap-resources S3 bucket - plugins, example documents, boundary files, banners, or notification configs
$ npx skills add concord-consortium/codap --skill codap-resources -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install concord-consortium/codap codap-resources --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/concord-consortium/codap.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/codap-resources .claude/skills/codap-resources && 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 "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .claude/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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/concord-consortium/codap/tree/main/.claude/skills/codap-resourcesType 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 concord-consortium/codap --skill codap-resources -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install concord-consortium/codap codap-resources --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/concord-consortium/codap.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/codap-resources .agents/skills/codap-resources && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .agents/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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 concord-consortium/codap --skill codap-resources -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install concord-consortium/codap codap-resources --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/concord-consortium/codap.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/codap-resources .cursor/skills/codap-resources && 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 "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .cursor/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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/concord-consortium/codap.git --path .claude/skills/codap-resources--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 concord-consortium/codap --skill codap-resources -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install concord-consortium/codap codap-resources --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/concord-consortium/codap.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/codap-resources .gemini/skills/codap-resources && 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 "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .gemini/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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 concord-consortium/codap codap-resourcesInstalls 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 concord-consortium/codap --skill codap-resources -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/concord-consortium/codap.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/codap-resources .github/skills/codap-resources && 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 "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .github/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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 concord-consortium/codap --skill codap-resources -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install concord-consortium/codap codap-resources --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/concord-consortium/codap.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/codap-resources .opencode/skills/codap-resources && 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 "codap-resources" agent skill from https://github.com/concord-consortium/codap/tree/main/.claude/skills/codap-resources into .opencode/skills/codap-resources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codap-resources", 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.
codap-resourcesA skill your agent uses when deploying, updating, or syncing assets to the codap-resources S3 bucket - plugins, example documents, boundary files, banners, or notification configs
Codap Resources is an agent skill from concord-consortium/codap. Use when deploying, updating, or syncing assets to the codap-resources S3 bucket - plugins, example documents, boundary files, banners, or notification configs
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Amazon S3 and Amazon Web Services. The repository describes itself as: CODAP (Common Online Data Analysis Platform). The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4bcb0ff. 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:
awsrsynccurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use aws, rsync and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Codap Resources loads about 4.4k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 1,696 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 concord-consortium/codap at commit 4bcb0ff, republished under its MIT licence (© concord-consortium). 1,696 words, ~4,383 tokens.
.claude/skills/codap-resources/SKILL.md (or your agent's skills folder).Manage assets in the s3://codap-resources/ S3 bucket using the AWS CLI.
The bucket is served via CloudFront at codap-resources.concord.org.
Display this to the user:
codap-resources — Deploy and manage assets in the
codap-resourcesS3 bucket (served atcodap-resources.concord.org).This skill helps with copying files, syncing plugin builds, and invalidating the CloudFront cache for the CODAP resource bucket.
Requirements:
- AWS CLI installed (
aws --version)- Authenticated with credentials that have write access to the
codap-resourcesbucket and permission to create CloudFront invalidationsWhat do you want to do?
Then ask the user what they want to do, or proceed with the task if it was already specified.
| Folder | Contents | ACL | Cache |
|---|---|---|---|
notifications/ | Banners, announcements (JSON) | public-read | no-cache, no-store, must-revalidate |
boundaries/ | GeoJSON boundary documents (US states, counties, etc.) | public-read | default |
example-documents/ | CODAP example documents | public-read | default |
plugins/ | Built CODAP plugins (folders) | public-read | default |
aws s3 cp <local-file> s3://codap-resources/<folder>/<filename> --acl public-readFor notifications/ assets, always add no-cache:
aws s3 cp <local-file> s3://codap-resources/notifications/<filename> \
--acl public-read \
--cache-control "no-cache, no-store, must-revalidate"Always use --size-only — timestamps never match between local files and S3, so without this flag every file will appear changed. Always dry-run first so the user can review what will change before anything is uploaded:
# 1. Dry run — show what would change
aws s3 sync <local-folder> s3://codap-resources/<folder>/<name>/ \
--acl public-read --size-only --dryrun
# 2. After user confirms, run for real
aws s3 sync <local-folder> s3://codap-resources/<folder>/<name>/ \
--acl public-read --size-onlyAdd --delete to remove S3 files that no longer exist locally. Omit it to preserve old files.
After updating cached assets (plugins, documents, boundaries), invalidate the CloudFront cache so changes are served immediately. Not needed for notifications/ since those use no-cache headers.
There are three distributions, and the one you invalidate depends on how the asset is consumed:
| Distribution | Serves | Viewer path | Invalidation path |
|---|---|---|---|
E1RS9TZVZBEEEC | codap-resources.concord.org (direct bucket access) | /<folder>/... | /<folder>/* |
E7WVRGISCR2VR | codap3.concord.org | /codap-resources/<folder>/... | /<folder>/* |
E26XOJN7T3CJO | codap.concord.org, codap2to3.concord.org | /codap-resources/<folder>/... | /<folder>/* |
⚠️ Production V3 does NOT load assets from
codap-resources.concord.org. It loads them from a relative/codap-resources/...path (seekCodapResourcesUrlinv3/src/constants.ts, which resolves to"/codap-resources"when not in local dev). That path is served by the app distributions —E7WVRGISCR2VR(codap3) andE26XOJN7T3CJO(codap / codap2to3) — each with its own edge cache. Invalidating onlyE1RS9TZVZBEEECleaves production users on stale files. Anything production V3 loads (plugins, example-document guides, boundaries) needs the app distributions invalidated too.
🛑 On the app distributions, invalidate the STRIPPED path (
/<folder>/*), NOT/codap-resources/<folder>/*. The/codap-resources/*behavior has a viewer-request CloudFront function (StripCodapResourcesPrefix) that rewrites the URI/codap-resources/...→/...before the cache key is computed. Objects are therefore cached under the stripped key (e.g./plugins/onboarding/strings.json). An invalidation for/codap-resources/plugins/onboarding/*matches nothing — it reportsCompletedwhile purging zero objects, and stale content keeps being served. Always invalidate the post-rewrite path:/plugins/onboarding/*.
# codap-resources.concord.org (direct bucket access — no prefix function)
aws cloudfront create-invalidation --distribution-id E1RS9TZVZBEEEC \
--paths "/<folder>/*"
# production app hosts (what V3 users actually hit) — use the STRIPPED path, repeat for both
aws cloudfront create-invalidation --distribution-id E7WVRGISCR2VR \
--paths "/<folder>/*"
aws cloudfront create-invalidation --distribution-id E26XOJN7T3CJO \
--paths "/<folder>/*"To confirm an invalidation actually took effect (not just Completed), re-request the asset
and check the response: x-cache: Miss from cloudfront on the first hit plus the expected
last-modified/content means the edge refetched. A Hit with stale last-modified after a
Completed invalidation is the tell-tale sign you invalidated the wrong (pre-rewrite) path.
aws s3 ls s3://codap-resources/<folder>/Use --cache-control "no-cache, no-store, must-revalidate" for any asset that:
Immutable, content-hashed files (webpack chunks with a hash in the filename) can use default caching — their name changes when the content changes.
But mutable, unversioned plugin entry files — index.html, and any top-level
same-named-across-deploys files like onboarding.js, strings.json, init_*.js,
task_descriptions*.js — should be uploaded with --cache-control "no-cache" so browsers
revalidate via ETag and pick up changes immediately instead of waiting out CloudFront's (and
the browser's heuristic) default TTL:
aws s3 cp onboarding.js s3://codap-resources/plugins/onboarding/onboarding.js \
--acl public-read --cache-control "no-cache"no-cache does NOT mean "don't cache" — it means "cache, but revalidate before reusing."
It does not force a full download on every load:
ETag (the
content fingerprint S3 returns).If-None-Match: <etag>). If the
file is unchanged, the server returns 304 Not Modified with an empty body and the
browser reuses its cached copy — a tiny header-only round-trip, no payload. Only when the
content actually changed does the server return 200 with the new body.So the cost is one lightweight revalidation per load (a 304 when nothing changed), and the
benefit is that a deploy is picked up on the next load. Contrast:
no-store — never cache; full download every time (heavier than needed here).max-age=N / immutable — no revalidation round-trip at all; correct only for
content-hashed files (the chunk's filename changes when its content does).Cache-Control) — browsers fall back to heuristic freshness (~10% of age since
Last-Modified); a year-old Last-Modified ⇒ ~weeks of staleness. This is the bug to avoid.Without no-cache, different entry files age out of cache at different times and a deploy can
leave users on a half-updated plugin — e.g. a new onboarding.js that references string
keys a stale strings.json doesn't have yet, so lookups return raw keys like
~onboarding1.mammals.table.title instead of the translated text.
CODAP V3 loads these assets from S3 (s3://codap-resources/) rather than bundling
them in the build. There are two ways assets get there:
Before the release of V3, certain static/built-in plugins were deployed as part of
the V2 build on codap-server.concord.org, then manually copied to S3 for
compatibility with V3. With the release of V3 we are no longer performing regular
V2 builds, so the direct-to-S3 path below is required for routine plugin updates.
Use this for a targeted update to a single plugin from its source repo (sibling
repos under codap-build/, e.g. codap-data-interactives).
Many static plugins are served as raw source with no build step — e.g. Simmer
at eepsmedia/plugins/simmer/, whose index.html loads src/*.js directly via
script tags. For these the source folder is the deployable artifact: copy the
changed file(s) straight to S3, no build required.
Identify the S3 location. Plugins live under
s3://codap-resources/plugins/<path>/, mirroring the build's layout. The path
can be nested — e.g. eepsmedia plugins are at
s3://codap-resources/plugins/eepsmedia/plugins/<name>/. Confirm with
aws s3 ls, and diff the deployed file against your local copy first so you
know exactly what will change.
Copy the changed file(s). For mutable entry files (index.html, top-level
*.js / strings.json) add --cache-control "no-cache" (see
When to Use No-Cache):
aws s3 cp eepsmedia/plugins/simmer/index.html \
s3://codap-resources/plugins/eepsmedia/plugins/simmer/index.html \
--acl public-read --cache-control "no-cache"For a whole-folder update use aws s3 sync ... --size-only (see
Sync a folder); for webpack-built plugins
remember to cp index.html explicitly afterward (hashed chunks).
Invalidate CloudFront on all three distributions at the STRIPPED path — see CloudFront Invalidation:
aws cloudfront create-invalidation --distribution-id E1RS9TZVZBEEEC \
--paths "/plugins/eepsmedia/plugins/simmer/*"
aws cloudfront create-invalidation --distribution-id E7WVRGISCR2VR \
--paths "/plugins/eepsmedia/plugins/simmer/*"
aws cloudfront create-invalidation --distribution-id E26XOJN7T3CJO \
--paths "/plugins/eepsmedia/plugins/simmer/*"Verify the edge refetched (required — a Completed status alone proves
nothing):
for host in codap.concord.org codap3.concord.org; do
echo "--- $host ---"
curl -sI "https://$host/codap-resources/plugins/eepsmedia/plugins/simmer/index.html" \
| grep -iE "x-cache|last-modified"
doneExpect x-cache: Miss from cloudfront plus the new last-modified on the first
request after the invalidation.
Note: This path predates regular V3 releases and is retained for context and for bulk re-syncing many plugins from a known build at once. For a routine single-plugin update, use Direct-to-S3 deploy above instead.
When a V2 build was the source of truth for plugins and example documents, the
relevant assets were synced from codap-server.concord.org to S3 after each build.
The V2 build stores these assets under extn/ in the release directory:
| Server path | S3 destination |
|---|---|
extn/plugins/ | s3://codap-resources/plugins/ |
extn/example-documents/ | s3://codap-resources/example-documents/ |
extn/boundaries/ | s3://codap-resources/boundaries/ |
The V2 build still ships some plugin folders that are no longer used. Skip these when syncing plugins/ — they're dead weight and uploading them just wastes bandwidth and pollutes S3.
| Folder | Why it's dead | Use instead |
|---|---|---|
NOAA-weather/ | Renamed; V2's plugin map points to noaa-codap-plugin/. V3 has an explicit URL rewriter at v3/src/components/web-view/web-view-utils.ts:28 that translates /plugins/NOAA-weather/... → /plugins/noaa-codap-plugin/... so old saved documents still load. | noaa-codap-plugin/ |
When using aws s3 sync ... s3://codap-resources/plugins/, pass --exclude "NOAA-weather/*" (repeat --exclude for any others added in future).
Read ~/.codap-build.rc to get CODAP_SERVER (defaults to codap-server.concord.org) and CODAP_SERVER_WWW_BASE (defaults to /var/www/html).
Ask the user what to sync and which build to sync from:
build_0743)Download from the server to a local temp directory:
For example documents:
rsync -avz codap-server.concord.org:/var/www/html/releases/build_XXXX/extn/example-documents/ /tmp/codap-sync/example-documents/For all plugins:
rsync -avz codap-server.concord.org:/var/www/html/releases/build_XXXX/extn/plugins/ /tmp/codap-sync/plugins/For a specific plugin (e.g., TP-Sampler):
rsync -avz codap-server.concord.org:/var/www/html/releases/build_XXXX/extn/plugins/TP-Sampler/ /tmp/codap-sync/plugins/TP-Sampler/Dry-run the S3 sync so the user can review changes.
For plugins, use --delete to remove orphaned chunks from previous builds:
aws s3 sync /tmp/codap-sync/plugins/TP-Sampler/ s3://codap-resources/plugins/TP-Sampler/ \
--acl public-read --size-only --delete --dryrunFor example documents and boundaries, omit --delete to preserve files:
aws s3 sync /tmp/codap-sync/example-documents/ s3://codap-resources/example-documents/ \
--acl public-read --size-only --dryrunPresent changed files in two groups: new (not in S3) and modified (already in S3 with different size).
After user confirms, run for real:
aws s3 sync /tmp/codap-sync/plugins/TP-Sampler/ s3://codap-resources/plugins/TP-Sampler/ \
--acl public-read --size-only --deleteFix up entry-point files missed by --size-only:
Webpack-built plugins use content hashes in JS/CSS filenames, so when code
changes the chunk filenames change but index.html stays the same size while
referencing different chunks. The --size-only flag will miss this update,
leaving the plugin broken (index.html pointing to chunks that no longer exist).
After every plugin sync, explicitly copy index.html to ensure it is
current:
aws s3 cp /tmp/codap-sync/plugins/TP-Sampler/index.html \
s3://codap-resources/plugins/TP-Sampler/index.html --acl public-readThis step is not needed for example documents or boundaries since they don't have entry-point files with hashed references.
Invalidate CloudFront cache on every distribution that serves the asset — see the CloudFront Invalidation section. For a plugin, that means the direct distribution and the two app distributions production V3 actually loads from:
aws cloudfront create-invalidation --distribution-id E1RS9TZVZBEEEC \
--paths "/plugins/TP-Sampler/*"
# app distributions: STRIPPED path (the StripCodapResourcesPrefix function), NOT /codap-resources/...
aws cloudfront create-invalidation --distribution-id E7WVRGISCR2VR \
--paths "/plugins/TP-Sampler/*"
aws cloudfront create-invalidation --distribution-id E26XOJN7T3CJO \
--paths "/plugins/TP-Sampler/*"Verify the invalidation actually purged (required — do NOT skip):
A Completed status does not mean anything was purged — CloudFront reports no
match/purge count, so a wrong-path (no-op) invalidation looks identical to a real one.
The only reliable check is to re-request the asset on each app host and confirm the edge
refetched. Request an entry file that changed (e.g. a plugin's index.html or, for the
onboarding plugin, strings.json):
for host in codap.concord.org codap3.concord.org; do
echo "--- $host ---"
curl -sI "https://$host/codap-resources/plugins/TP-Sampler/index.html" \
| grep -iE "x-cache|last-modified"
doneExpect: x-cache: Miss from cloudfront on the first request after the invalidation,
plus the new last-modified (or the new content). ✅
Red flag: x-cache: Hit from cloudfront with a stale last-modified after a
Completed invalidation means you invalidated the wrong path (most often the pre-rewrite
/codap-resources/... instead of the stripped /... — see the CloudFront Invalidation
section). Re-invalidate with the correct path and re-verify.
Clean up the temp directory:
rm -rf /tmp/codap-sync/Assets are typically built from sibling repos in the codap-build directory:
cloud-file-manager - banner configs, file storage integrationcodap-data-interactives - plugin buildscodap-data - example documents and boundary files© concord-consortium, MIT. 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/codap-resources of concord-consortium/codap.
Open the folder on GitHubat commit 4bcb0ff
Codap Resources 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 |
|---|---|---|---|---|---|---|
| Codap Resources this skillconcord-consortium/codap | 106 | — | ~4.4k | Automated safety check: Pass | MIT | |
| Hyperpod Issue Reportawslabs/agent-plugins | 915 | 1 repos | ~890 | Automated safety check: Pass | Apache-2.0 | |
| Update Quarto in RStudiorstudio/rstudio | 5.1k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Processing S3 Uploads With Step Functionsaws/agent-toolkit-for-aws | 2.8k | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Cloud Auditbriiirussell/cybersecurity-skills | 413 | — | ~1.3k | Automated safety check: Notes | MIT | |
| Django Storages for S3Jeffallan/claude-skills | 12k | — | ~1.9k | Automated safety check: Pass | MIT |
awslabs/agent-plugins
Generate comprehensive issue reports from HyperPod clusters (EKS and Slurm) by collecting diagnostic logs and configurations for troubleshooting and AWS Support cases.
rstudio/rstudio
Bumps the pinned Quarto version across the RStudio repository, mirrors the release to the rstudio-buildtools S3 bucket, verifies it and opens a PR, on macOS and Linux.
aws/agent-toolkit-for-aws
Deploy an event-driven workflow that routes S3 uploads to either Lambda or Fargate via Step Functions based on file size.
briiirussell/cybersecurity-skills
Audit cloud infrastructure (AWS, GCP, Azure) for misconfigurations, excessive permissions, and security gaps.
Jeffallan/claude-skills
Sets up Django 4.2+ to keep static and media files on AWS S3 through django-storages, with public and private backends, presigned URLs and CloudFront.
neondatabase/agent-skills
S3-compatible object storage that branches with your Neon project, so files and the database stay in sync across every branch.
concord-consortium/codap
A skill your agent uses when regenerating, updating, or auditing the CODAP v3 log-events dictionary CSV (the list of every log event the v3 app can emit, with placeholders/parameters/descriptions).
concord-consortium/codap
A skill your agent uses when preparing a CODAP v3 release, creating release notes, updating version files, creating release PRs, tagging releases, or deploying to staging/production.
Works with
A skill your agent uses when deploying, updating, or syncing assets to the codap-resources S3 bucket - plugins, example documents, boundary files, banners, or notification configs. Codap Resources is an agent skill from concord-consortium/codap.
Codap Resources fits situations like: syncing assets to the codap-resources S3 bucket - plugins; example documents; notification configs.
Run `npx skills add concord-consortium/codap --skill codap-resources -a claude-code`. Or copy the skill folder (.claude/skills/codap-resources in concord-consortium/codap) into .claude/skills/codap-resources in your project. Claude Code loads it when a task matches its description.
Run `npx skills add concord-consortium/codap --skill codap-resources -a codex`. Or copy the skill folder (.claude/skills/codap-resources in concord-consortium/codap) into .agents/skills/codap-resources 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 concord-consortium/codap --skill codap-resources -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/codap-resources, .gemini/skills/codap-resources, .github/skills/codap-resources and .opencode/skills/codap-resources in your project.
Going by SKILL.md and its folder, Codap Resources needs the command-line tools its instructions call (aws, rsync and curl).
SKILL.md contains no URLs. Its commands use curl, 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.
Codap Resources is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k 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 Codap Resources: Hyperpod Issue Report (awslabs/agent-plugins, 915 stars), Update Quarto in RStudio (rstudio/rstudio, 5.1k stars), Processing S3 Uploads With Step Functions (aws/agent-toolkit-for-aws, 2.8k stars) and Cloud Audit (briiirussell/cybersecurity-skills, 413 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
concord-consortium (a GitHub organization) maintains it in concord-consortium/codap, which has 106 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: concord-consortium/codap on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.