Add Entity
fullstackhero/dotnet-starter-kit
Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module.
Scaffold templates: authoring scaffold.yaml, form fields (types, validation, conditional when:), conditional file generation, step-backed hooks (pre/post-generate), update-safe 3-way merge, and…
$ npx skills add cloudposse/atmos --skill atmos-scaffold -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cloudposse/atmos atmos-scaffold --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/cloudposse/atmos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .claude/skills/atmos-scaffold && 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 "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .claude/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffoldType 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 cloudposse/atmos --skill atmos-scaffold -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cloudposse/atmos atmos-scaffold --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .agents/skills/atmos-scaffold && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .agents/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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 cloudposse/atmos --skill atmos-scaffold -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cloudposse/atmos atmos-scaffold --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .cursor/skills/atmos-scaffold && 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 "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .cursor/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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/cloudposse/atmos.git --path agent-skills/skills/atmos-scaffold--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 cloudposse/atmos --skill atmos-scaffold -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cloudposse/atmos atmos-scaffold --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .gemini/skills/atmos-scaffold && 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 "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .gemini/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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 cloudposse/atmos atmos-scaffoldInstalls 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 cloudposse/atmos --skill atmos-scaffold -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .github/skills/atmos-scaffold && 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 "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .github/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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 cloudposse/atmos --skill atmos-scaffold -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cloudposse/atmos atmos-scaffold --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent-skills/skills/atmos-scaffold .opencode/skills/atmos-scaffold && 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 "atmos-scaffold" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-scaffold into .opencode/skills/atmos-scaffold/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-scaffold", 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.
atmos-scaffoldScaffold templates: authoring scaffold.yaml, form fields (types, validation, conditional when:), conditional file generation, step-backed hooks (pre/post-generate), update-safe 3-way merge, and…
Atmos Scaffold is an agent skill from cloudposse/atmos. Scaffold templates: authoring scaffold.yaml, form fields (types, validation, conditional when:), conditional file generation, step-backed hooks (pre/post-generate), update-safe 3-way merge, and atmos scaffold generate/list/validate
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/merge-strategy.md` and `references/scaffold-yaml-schema.md`).
It sits in Development, covering Project scaffolding. The repository describes itself as: Atmos is the open-source runtime for infrastructure — it builds, authenticates, and ships Terraform, OpenTofu, Packer, Ansible, Kubernetes, Helm, and containers the same way on… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit fbae93f. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml and bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Atmos Scaffold loads about 3.6k tokens when it runs, and up to ~8.2k if it reads all its reference files. Until then it costs about 62 tokens; SKILL.md has 1,392 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 cloudposse/atmos at commit fbae93f, republished under its Apache-2.0 licence (© cloudposse). 1,392 words, ~3,601 tokens.
.claude/skills/atmos-scaffold/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this skill for generating boilerplate (components, configs, directory structures)
from templates via atmos scaffold generate, for authoring new templates
(scaffold.yaml), and for updating previously-generated output from a changed
template via --update.
For bootstrapping a brand-new Atmos project from the built-in template catalog, load
atmos-init instead — it shares this exact engine but has its own command surface and
built-in template list.
apiVersion: atmos/v1
kind: AtmosScaffoldConfig
metadata:
name: terraform-component
description: Standard Terraform component structure
spec:
fields:
- name: component_name
label: Name of the component
type: input
required: trueatmos scaffold generate terraform-component ./components/terraform/vpc
atmos scaffold list
atmos scaffold validate ./components/terraform/vpc/scaffold.yamlatmos scaffold ships experimental — behavior may change between releases.
A template is a directory containing scaffold.yaml (the questionnaire and
optional conditional-generation/hooks config) plus the files to generate.
Files are auto-discovered by walking the template directory — there is no
files: manifest listing every file (spec.files: exists only for the optional
conditional-generation overlay, see below).
Mark a file as a Go template (rendered with the collected answers) either by:
.tmpl extension, oratmos:template magic comment in the first 10 lines, in the
comment style matching the file type: # atmos:template (shell/YAML/Python),
// atmos:template (Go/JS/C++), /* atmos:template */ (C-style block),
<!-- atmos:template --> (HTML/XML/Markdown)Template sources: embedded (built into the Atmos binary), custom (declared under
scaffold.templates in atmos.yaml), or catalog/remote (git/https/s3/oci — advertised
as stubs, fetched on selection). An OCI source (oci://ghcr.io/org/template:v1) is pulled
via the same pkg/oci client atmos vendor pull reuses (load atmos-vendoring for the
URL syntax and auth precedence). --ref only applies to git sources; OCI/S3/local sources
address a version through the source string itself.
spec.fields is an ordered questionnaire; fields prompt in the order declared.
| Type | Prompt widget |
|---|---|
input / text / string | Free-form text (huh Input) |
select | Single choice from options: |
multiselect | Multiple choices from options: (filterable) |
confirm / bool / boolean | Yes/no |
Common field keys: name (required, used as the template variable — access via
{{ .Config.<name> }}), label, description, required, default,
options (select/multiselect), placeholder (input), validation.pattern/message
(regex, input fields only).
options: (select/multiselect)options: accepts a plain string list, a list of {label, value} objects, a dot-path into an
earlier answer, or a Go-template expression:
spec:
fields:
- name: envs
type: multiselect
options: # {label, value} objects — value is required, label optional
- label: Development
value: dev
- label: Production
value: prod
- name: default_env
type: select
options: answers.envs # dot-path: only the environments actually picked above
- name: csv_owners
type: input
default: "platform-team,security-team"
- name: primary_owner
type: select
options: '{{ splitList "," answers.csv_owners }}' # Go-template expressionThe dot-path and template-expression forms resolve correctly once the referenced earlier field
has been answered — interactively (fields prompt one at a time, so a later field is only ever
shown after the ones before it) or headlessly against --set/--defaults — the same
answers.-prefix convention spec.files[].matrix axes use. A dot-path may also point at a spec.values preset or
a --set-supplied value never declared as a field at all; there's no field-declaration-order
check at load time, so a forward/self/typo'd reference degrades gracefully at runtime instead of
failing to load. When a dot-path (not a template expression) sources from a field using
{label, value} pairs, those labels are recovered for the filtered subset of values present in
the answer — only values ever flow into answers/templates, never labels. Full details:
references/scaffold-yaml-schema.md.
when:)A field can declare when: to be shown only if a condition on earlier-declared
fields' answers holds true:
spec:
fields:
- name: enable_monitoring
type: confirm
default: false
- name: alert_email
type: input
when: "answers.enable_monitoring == true" # only asked if confirmed abovewhen: accepts a predicate keyword (always, never, ci, local), a CEL string, or
a list (implicit all). Reference collected answers via the answers map — e.g.
"'dev' in answers.environments" for a multiselect, "answers.x == true" for a
confirm (a bare answers.x is not valid CEL here — it's typed dyn, not bool;
compare explicitly). Use CEL's &&/||/! for compound conditions — the
{all:/any:/not:} map form is not accepted for scaffold when: (see
references/scaffold-yaml-schema.md for why).
A when: can only see fields declared before it in the list.
Full field/validation reference: references/scaffold-yaml-schema.md.
spec.files: is an optional overlay gating specific auto-discovered files, keyed by
their path in the template tree. Files not listed always generate.
spec:
files:
- path: stacks/deploy/dev.yaml
when: "'dev' in answers.environments"
- path: stacks/deploy/staging.yaml
when: "'staging' in answers.environments"This is static gating over a fixed, enumerable set of files the template author
already created — one file stays one file. For generating a variable number of files
(one per selected value, or one per resolved combination of several axes), see
spec.files[].matrix below.
path: can also be a glob (doublestar syntax: *, ?, [...], ** for any depth,
{a,b}), matching every discovered file under it, so one entry gates or skips an
entire directory recursively instead of listing every file it contains:
spec:
files:
- path: "docs/legacy/**"
when: "answers.include_legacy_docs == true" # gates the whole directory at onceAlways use forward slashes in the pattern — a backslash is normalized to /
regardless of authoring OS. A malformed pattern (unclosed [/{) fails scaffold
load and atmos scaffold validate immediately, not silently at generation time.
When more than one entry's path: matches the same file, the last declared
entry wins (.gitignore/CODEOWNERS precedence — write broad patterns first,
specific overrides after).
This is distinct from the older path-templating trick: if a file's path itself is a
Go template that renders to "", "false", "null", or "<no value>", the engine
skips it too (ShouldSkipFile). Prefer declarative when: for new templates — it's
evaluated before any rendering and doesn't require crafting a path template.
spec.files[].matrix expands one discovered file into one generated file per resolved
combination of one or more axes — the same map[axis][]values shape workflow matrix:
steps use. Requires target: (a Go-template string overriding the discovered path:),
since a single path: can't serve as the output for more than one file.
spec:
files:
- path: templates/deploy.yaml
target: "deploy/{{ .matrix.environment }}/{{ .matrix.region }}.yaml"
matrix:
environment: answers.environments # a list-shaped answer
region: [us-east-1, us-west-2] # a literal list
when: "matrix.region in answers.environments[matrix.environment].regions"Each axis's value is a literal list, a dot-path into answers.* referencing an
already list-shaped answer, or a Go-template expression computing the list from
nested/structured or free-text answer data (e.g. '{{ collectKeys answers.environments "regions" }}' for a computed axis, or '{{ splitList "," answers.environments_csv }}' for a free-text one — see atmos-templates for collectKeys). The resolved
combination is available as .matrix.<axis> in target:, in when: (pruning
combinations that don't apply), and in the file's own rendered content.
Directory-level matrix: a glob path: (see above) plus matrix: duplicates
every file it matches once per combination, not just one file:
spec:
files:
- path: "components/**"
target: "environments/{{ .matrix.env }}/{{ .file.RelPath }}"
matrix:
env: [dev, staging, production].file.Path (the matched file's own discovered path) and .file.RelPath (that path
with the glob's literal prefix stripped, e.g. vpc/main.tf for components/**
matching components/vpc/main.tf) are available in target: and content alongside
.matrix.<axis> — required here since every matched file otherwise shares the same
.matrix.<axis> values and would render to the same path. A target: that omits
.file.Path/.file.RelPath when its path: matches more than one file fails before
any file is written, not mid-run. .file.* is Go-template-only — it is not exposed to
CEL when:.
Full schema: references/scaffold-yaml-schema.md.
spec.hooks: runs step-backed actions before/after generation, keyed by hook name,
reusing the exact vocabulary stack-level lifecycle hooks use — load atmos-hooks
for the full events/kind/when/type/with reference and atmos-steps for the
step types available in with:. Events are before.scaffold.generate and
after.scaffold.generate; a hook with no events: matches both.
spec:
hooks:
git-add:
events:
- after.scaffold.generate
kind: step
type: shell
when: "size(answers.environments) > 0"
with:
command: "git add ."Only kind: step/kind: steps are supported today. Stack-level command, scanner,
store, git, and CI kinds require stack/component context that scaffold generation
does not have. kind: step takes one registered step type in type: and its payload
in with:; kind: steps takes an ordered with: list. Answers reach when: through
the answers CEL variable and reach step bodies through {{ .Answers.<field> }}
Go-template syntax.
Security: use --skip-hooks (skip all) or --skip-hooks=name1,name2 (skip
specific hooks) to bypass hooks for a diagnostic or untrusted-template run — the same
flag semantics terraform already has. ATMOS_SCAFFOLD_SKIP_HOOKS is the matching
env var.
atmos scaffold generate my-template ./target --update
atmos scaffold generate my-template ./target --update --base-ref=v1.2.0
atmos scaffold generate my-template ./target --update --merge-strategy=theirs
atmos scaffold generate my-template ./target --update --dry-run--update performs a real 3-way merge (base = the git ref the target was generated
from, defaulting to HEAD) instead of failing on a non-empty target directory.
--merge-strategy controls conflict resolution: manual (surface conflicts, default),
ours (keep your version), theirs (use the template's version). Full mechanics
(base storage, conflict markers, the "offer to update instead of failing" interactive
prompt): references/merge-strategy.md.
atmos scaffold generate [template] [target]: --force, --update, --base-ref,
--dry-run, --interactive/-i (default true), --defaults (use defaults/--set
without prompting), --set key=value (repeatable), --scaffold-source-override,
--ref (git ref for a template source), --git/--no-git (default false — see
atmos-init for the opposite default), --merge-strategy, --skip-hooks.
atmos scaffold list: templates from scaffold.templates in atmos.yaml (plus
embedded/catalog). atmos scaffold validate [path]: validates scaffold.yaml against
the JSON Schema.
| Need | Skill |
|---|---|
Stack hook kinds, lifecycle events, envelope (events/when/retry/on_failure) | atmos-hooks |
Every registered step type and aliases usable in a hook's with: | atmos-steps |
| Go-template/Gomplate/Sprig functions available in file content | atmos-templates |
| Project bootstrap from the built-in template catalog | atmos-init |
| OCI registry URL syntax, auth precedence, full source-type reference | atmos-vendoring |
| Generated JSON Schema for IDE validation | atmos-schemas |
when:/CEL syntax reference | atmos-workflows |
spec.fields[].when:/spec.files[].when: over hand-rolled path
templates or post-generation sed/shell cleanup.post_generate hooks (deleting files, force-pushing, etc.) opt-in
and visible in scaffold.yaml, mirroring atmos-hooks' guidance for stack hooks.when: can only reference fields/files declared earlier — referencing a
not-yet-declared field silently sees its zero value, not an error; order fields
deliberately.when: — use when:
for new templates; the sentinel trick remains for backward compatibility.© cloudposse, 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
SKILL.md and 2 other files (references) in agent-skills/skills/atmos-scaffold of cloudposse/atmos.
Open the folder on GitHubat commit fbae93f
Atmos Scaffold 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 |
|---|---|---|---|---|---|---|
| Atmos Scaffold this skillcloudposse/atmos | 1.4k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Add Entityfullstackhero/dotnet-starter-kit | 6.8k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Add Featurefullstackhero/dotnet-starter-kit | 6.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Add Integration Eventfullstackhero/dotnet-starter-kit | 6.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Add Modulefullstackhero/dotnet-starter-kit | 6.8k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Query Patternsfullstackhero/dotnet-starter-kit | 6.8k | — | ~1.2k | Automated safety check: Pass | MIT |
fullstackhero/dotnet-starter-kit
Add a domain entity/aggregate with EF configuration and a migration to an existing FSH module.
fullstackhero/dotnet-starter-kit
Add a vertical-slice feature (command/query + handler + validator + endpoint) to an existing FSH module.
fullstackhero/dotnet-starter-kit
Publish a cross-module integration event via the Outbox and handle it idempotently in another module.
fullstackhero/dotnet-starter-kit
Create a new module (bounded context) — runtime + Contracts projects, IModule, DbContext, permissions, migrations, and the four registration sites.
fullstackhero/dotnet-starter-kit
Implement read queries — paginated lists, search/filter/sort, and single-entity fetches — the FSH way (DbContext LINQ + PagedResponse).
Kilo-Org/kilo-marketplace
Sets up and maintains AzureML-ready Python projects as uv workspaces with devcontainers, a Makefile and job YAML, so local runs match cloud jobs and experiments stay reproducible.
cloudposse/atmos
A skill your agent uses when implementing, finishing, documenting, or reviewing a fix, repair, remediation, bug fix, debug-and-fix task, workflow fix, infrastructure fix, or any change that should…
cloudposse/atmos
Atmos Terraform linting with TFLint: standalone atmos terraform lint, component-aware config discovery and toolchain versions, TFLint rule configuration, and lifecycle hooks/CI findings.
cloudposse/atmos
Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.
cloudposse/atmos
Decide whether a PR's new or changed default needs edition-journal handling (pkg/edition, docs/prd/editions.md), and do the mechanical work if so: journal entries, the four-layer default check…
cloudposse/atmos
Migrate to Atmos from native Terraform, Terraform Workspaces, Terramate, Terragrunt, Make, Just, or Task; migrate tool versions from mise or Aqua CLI; migrate AWS/GCP/Azure CLI configs, Leapp…
cloudposse/atmos
Start an hourly background loop that keeps the current branch's PR rebased, its addressed CodeRabbit threads resolved, its CI checks passing, its lint clean, its tests passing with adequate patch…
Categories
Scaffold templates: authoring scaffold.yaml, form fields (types, validation, conditional when:), conditional file generation, step-backed hooks (pre/post-generate), update-safe 3-way merge, and…. Atmos Scaffold is an agent skill from cloudposse/atmos.
Atmos Scaffold fits situations like: tasks that involve Project scaffolding.
Run `npx skills add cloudposse/atmos --skill atmos-scaffold -a claude-code`. Or copy the skill folder (agent-skills/skills/atmos-scaffold in cloudposse/atmos) into .claude/skills/atmos-scaffold in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cloudposse/atmos --skill atmos-scaffold -a codex`. Or copy the skill folder (agent-skills/skills/atmos-scaffold in cloudposse/atmos) into .agents/skills/atmos-scaffold 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 cloudposse/atmos --skill atmos-scaffold -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/atmos-scaffold, .gemini/skills/atmos-scaffold, .github/skills/atmos-scaffold and .opencode/skills/atmos-scaffold in your project.
SKILL.md names no scripts, command-line tools or credentials: Atmos Scaffold is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Atmos Scaffold 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 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Atmos Scaffold: Add Entity (fullstackhero/dotnet-starter-kit, 6.8k stars), Add Feature (fullstackhero/dotnet-starter-kit, 6.8k stars), Add Integration Event (fullstackhero/dotnet-starter-kit, 6.8k stars) and Add Module (fullstackhero/dotnet-starter-kit, 6.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cloudposse (a GitHub organization) maintains it in cloudposse/atmos, which has 1,398 GitHub stars. The repository holds 70 skills in this directory. The repository was last updated on October 9, 2026.
Source: cloudposse/atmos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.