boxel: Skill for Claude Code

.claude/skills/aws-access/SKILL.md

aws-access is a skill for Claude Code from cardstack/boxel. It costs 0 tokens per session (14,383 once invoked), scanned D, original, MIT.

Technical guidance for changing the BXL expression engine, which turns readable formulas into values. The engine includes formula libraries, a parser, formatting and checking code, and rules for authorization and changes.

In plain words
What is it for?
Use it when modifying formula parsing, built-in functions, formatting, authorization, mutation behavior, or the engine's test-sensitive invariants.
Why use it?
It documents rules that may fail quietly even when tests pass, helping maintain the engine's behavior and its connections to the surrounding code. It is for engine maintainers rather than people merely writing formulas.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: positional $N argument; mentions Claude Code.

This is cardstack/boxel's own configuration. It tells Claude Code how to work on boxel itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything boxel configures →

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is ./alb-logs/ --recursive.

Reuse

Borrowing it

Nothing to install: this file belongs to cardstack/boxel. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/cardstack/boxel/main/.claude/skills/aws-access/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/cardstack/boxel

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for aws-access

README.md
[![agentmods](https://agentmods.dev/badge/skills/cardstack/boxel/aws-access/github.svg)](https://agentmods.dev/skills/cardstack/boxel/aws-access)
Your own site
<a href="https://agentmods.dev/skills/cardstack/boxel/aws-access"><img src="https://agentmods.dev/badge/skills/cardstack/boxel/aws-access/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for aws-access

Your own site · 80×15
<a href="https://agentmods.dev/skills/cardstack/boxel/aws-access"><img src="https://agentmods.dev/badge/skills/cardstack/boxel/aws-access.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 14,383 The whole file, excluding the scripts and references it only reads on demand.
Security scan D 3 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.14383
Opus 5.5 $0.00000 $0.05753
Sonnet 5.5 $0.00000 $0.02877
Haiku 4.5 $0.00000 $0.01438

Measured 5d ago against content hash 993e2e0e4414, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade D, and why

aws-access scanned grade D with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

- `session-manager-plugin` installed, **above 1.2.497.0** — required for the SSM port-forward tunnel to RDS. Install instructions: <https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-wit

Reaches for credential fileshighPrivilege escalation

SSH keys, cloud credentials, git-credentials, .npmrc, /etc/shadow: reading these is how a config file becomes a credential leak.

The flow below solves both: a wrapper script that mints a scoped STS session and writes its credentials to a _named profile_ in `~/.aws/credentials` so Claude can read them from any shell, plus the SSM port-forward patte

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

Do not use `localhost` (or `127.0.0.1`) as the `host` parameter. The ECS-managed SSM agent refuses to forward to loopback addresses for `AWS-StartPortForwardingSessionToRemoteHost`: the local port still binds and the ses
.claude/skills/aws-access/SKILL.md · 723 lines

How it starts

The opening of the file, as written. The whole thing — 723 lines — stays where its author put it; the contents beside it link to each section on GitHub.

AWS access (staging + prod) and RDS querying

This skill exists because:

  1. The team's existing staging / prod shell aliases export AWS credentials into the user's interactive shell, but Claude's Bash tool spawns its own shell that does not inherit them.
  2. The boxel staging/prod RDS instances are not publicly reachable — they live inside the AWS VPC.

The flow below solves both: a wrapper script that mints a scoped STS session and writes its credentials to a named profile in ~/.aws/credentials so Claude can read them from any shell, plus the SSM port-forward pattern for talking to the in-VPC database.

The script and mise task are in this repo:

  • scripts/claude-aws.sh
  • mise-tasks/claude-aws

Profile convention is fixed (don't change without a heads-up):

  • claude-staging — staging temp session (holds boxel-claude-readonly role creds)
  • claude-prod — prod temp session (holds boxel-claude-readonly role creds)

Identity model (CS-10962)

The credentials in [claude-staging] / [claude-prod] are not the user's IAM identity. The script does:

  1. Reads the user's long-lived IAM access keys (held in their source profile, e.g. cardstack).
  2. Calls sts:AssumeRole arn:aws:iam::<account>:role/boxel-claude-readonly directly, passing the user's MFA token via --serial-number and --token-code. The role's trust policy requires aws:MultiFactorAuthPresent: true, which is satisfied by these flags. This is the MFA gate.
  3. Writes the role's credentials to [claude-<env>]. Session length is the role's max_session_duration (12h).

Net effect: every aws --profile claude-<env> ... call Claude makes runs as boxel-claude-readonly, with exactly that role's policy. The user's IAM group memberships only matter to the extent that they grant sts:AssumeRole on the role; once the role is assumed, the user's groups are no longer in the picture. The role is the same name (boxel-claude-readonly) in both staging and prod, provisioned by the infra side of CS-10962.

Read the full file on GitHub · 723 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 723 lines · 0 tokens per session scan D 993e2e0e4414

Subscribe to this mod's changes

aws-access is a skill published in the GitHub repository cardstack/boxel (27 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 14,383 tokens. A static security scan graded it D with 3 findings (asks for root, reaches for credential files, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-21.