AWS Harness
hoodini/ai-agents-skills
Build a new AI agent on AWS and deploy it easily, OR wrap and deploy an agent you already have, using the Amazon Bedrock AgentCore harness.
A skill your agent uses when developing or modifying Copier templates in aegis/templates, or backporting a change from a generated project (e.g.
$ npx skills add lbedner/aegis-stack --skill template-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lbedner/aegis-stack template-dev --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/lbedner/aegis-stack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/template-dev .claude/skills/template-dev && 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 "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .claude/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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/lbedner/aegis-stack/tree/main/.claude/skills/template-devType 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 lbedner/aegis-stack --skill template-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lbedner/aegis-stack template-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lbedner/aegis-stack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/template-dev .agents/skills/template-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .agents/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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 lbedner/aegis-stack --skill template-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lbedner/aegis-stack template-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lbedner/aegis-stack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/template-dev .cursor/skills/template-dev && 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 "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .cursor/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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/lbedner/aegis-stack.git --path .claude/skills/template-dev--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 lbedner/aegis-stack --skill template-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lbedner/aegis-stack template-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lbedner/aegis-stack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/template-dev .gemini/skills/template-dev && 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 "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .gemini/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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 lbedner/aegis-stack template-devInstalls 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 lbedner/aegis-stack --skill template-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lbedner/aegis-stack.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/template-dev .github/skills/template-dev && 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 "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .github/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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 lbedner/aegis-stack --skill template-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lbedner/aegis-stack template-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lbedner/aegis-stack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/template-dev .opencode/skills/template-dev && 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 "template-dev" agent skill from https://github.com/lbedner/aegis-stack/tree/main/.claude/skills/template-dev into .opencode/skills/template-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "template-dev", 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.
template-devA skill your agent uses when developing or modifying Copier templates in aegis/templates, or backporting a change from a generated project (e.g.
Template Dev is an agent skill from lbedner/aegis-stack. Use when developing or modifying Copier templates in aegis/templates, or backporting a change from a generated project (e.g. a prototype scratch project) back into the templates. Covers the two development workflows, the three rendering modes that resolve where Copier reads template content from, and the template-specific gotchas that silently break generation or update.
Its SKILL.md is about 2.9k 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 Development, covering Project scaffolding. It works with Docker and FastAPI. The repository describes itself as: A production-ready FastAPI platform with modular components and a built-in control plane. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c8cbfad. 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:
makeuvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, 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.
Template Dev loads about 2.9k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,456 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 lbedner/aegis-stack at commit c8cbfad, republished under its MIT licence (© lbedner). 1,456 words, ~2,946 tokens.
.claude/skills/template-dev/SKILL.md (or your agent's skills folder).Develops and backports changes to the Copier templates that every generated
Aegis Stack project is rendered from. This is the general template-editing
workflow: how to iterate, how rendering picks up (or ignores) your edits, and
the traps that only show up on aegis update, not on a fresh aegis init.
Use when the task touches template content directly (docker-compose.yml.jinja,
Makefile.jinja, any file under app/, pyproject.toml.jinja, copier.yml,
etc.) or when a fix was made inside a generated project and needs to be
carried back into the templates.
Do NOT use this skill for adding a brand-new component or service (a
ComponentSpec/ServiceSpec entry, its FileManifest, and its
generation/update plumbing) - use the add-component or add-service skill
instead; they cover the plugin-spec registry work this skill assumes is
already done. Do NOT use for ordinary feature work inside the CLI tool itself
(aegis/commands/, aegis/core/ logic unrelated to rendering) unless that
work is specifically about how templates render or update.
Source-of-truth law: templates ship, generated projects are prototypes. The templates live under:
aegis/templates/copier-aegis-project/{{ project_slug }}/: every file a
generated project contains, one-to-one. A plain file with no Jinja logic
ships as-is (e.g. app/components/worker/registry.py); a file with
conditional content ships with a .jinja suffix (e.g.
app/components/worker/events.py.jinja).copier.yml (repo root, not under templates/): the question set Copier
prompts for or reads answers from.aegis/templates/copier-aegis-project/{{ project_slug }}/.copier-answers.yml.jinja:
the answers file template; see Pitfalls for which fields belong here.aegis/core/copier_manager.py: renders a new project (aegis init),
including the dev-mode/git-mode source selection and the post-generation
answers backfill.aegis/core/copier_updater.py: resolves the template source and version
ref for aegis update.aegis/core/manual_updater.py: adds/removes a single component or service
on an existing project without a full Copier update.aegis/core/render_diff.py: the engine manual_updater uses to decide
what a shared file needs on add/remove. Reads the file's policy
annotation; you rarely edit this, but its module docstring is the
reference for the decision table below.Makefile (repo root): the test-template* and test-stacks* targets used
to validate template changes.Backport target mapping: any file you edit inside a generated project at
<project>/<path> has its template source at
aegis/templates/copier-aegis-project/{{ project_slug }}/<path> (or
<path>.jinja if that file needs Jinja conditionals). Backport with:
cp my-app/app/components/worker/registry.py \
"aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry.py"Quote the destination path; the directory name contains the literal {{ project_slug }}
placeholder, which a shell would otherwise try to expand.
Every file in the tree is governed by exactly one mechanism, and which one is derived, not declared — there is no registration list. Adding a new template file requires no bookkeeping anywhere.
FileManifest (aegis/core/components.py / services.py). Its existence
is decided by manifest membership: aegis add copies it, aegis remove
deletes it. Most of a component's own files.{% if include_x %}
conditionals belong.Consequence worth internalising: a {% if include_worker %} block inside a
file the auth manifest owns will never re-render when worker is added,
because owned files are invisible to the engine by design. Cross-cutting
conditionals go in shared files.
A shared file can override the default handling with a comment on its very first line, read and stripped before rendering:
{#- aegis: user-owned -#} create once, then never touch (README, docs/)
{#- aegis: warn-if-diverged -#} overwrite while pristine, else preserve + report
{#- aegis: no-backup -#} overwrite without writing a .backupNo annotation means the default: overwrite while pristine (with a
.backup), 3-way merge once the user has edited it.
The -# / #- trim markers are required, not stylistic. aegis init
and aegis update render through Copier, which knows nothing about these
annotations; without the trim markers the comment leaves a blank line at
the top of every generated file. A recognised word missing its markers
raises rather than silently degrading.
{%- if include_x -%}...{%- endif -%} wrapping an entire file still emits a
newline when the gate is off, so Copier writes a 1-byte file. That stub is
what the template currently produces, so it counts as pristine and gets
populated when the gate flips on. Don't "tidy" it by making the engine treat
existing-but-empty as user content — that is the exact bug that once left
docker-compose.prod.yml empty forever after aegis add ingress.
Pick one of two workflows, then apply the rendering mode that matches it.
Template-first (the change is already known):
aegis/templates/copier-aegis-project/{{ project_slug }}/....aegis init test-project --dev (working
tree, no commit needed) or make test-template-quick/make test-template
(committed state, see rendering modes below).make clean-test-projects.Prototype-first (exploratory, the fix is easier to find by iterating directly on generated code):
aegis init <name> --dev, or any
make test-template* target).cp pattern above
for every file you touched. Do not defer this; changes left only in a
generated project are lost on the next aegis init.Rendering modes (this resolves which template content Copier actually reads):
--dev): Copier
renders the COMMITTED git state, either via a GitHub URL (pip/uvx install)
or a git+file:// URL pointing at the local repo (aegis/core/copier_manager.py,
the is_git_repo(template_root) branch). Uncommitted template edits are
invisible even though the files look changed locally.aegis init --dev: renders the WORKING TREE. aegis/core/copier_manager.py's
dev_mode branch copies copier.yml and
aegis/templates/copier-aegis-project from the working tree into a
temporary directory and generates from that plain path, so uncommitted
edits show up immediately. Use this for local iteration; no commit
required. Projects generated this way have no _commit pin and cannot run
aegis update later.aegis update -y -p <project> -t <aegis-stack repo> --to-version HEAD.
-p/--project-path points at the target project, -t/--template-path
points Copier at a local aegis-stack checkout instead of the installed
package, and --to-version HEAD resolves to the latest commit on the
current branch instead of a version tag. This still reads the COMMITTED
state of that checkout, not its working tree, so template changes must be
committed first.Start with the fast ones. These run in under a second against rendered output and catch the two mistakes template edits actually make:
uv run pytest tests/core/test_template_tree_hygiene.py — every template
parses, and no file is shadowed by a .jinja twin.uv run pytest tests/core/test_shared_scope_completeness.py tests/core/test_render_diff_transition_coverage.py — a new
stack-dependent file is handled by something, and every add/remove
transition writes the files it needs.Run those before generating a project; a template that fails to parse
wastes a 40-second aegis init to tell you so.
Then the generation gates:
make test-template after any template edit (generates a project and runs
its full validation, including make check inside the generated project).make test-template-quick (no validation),
make test-template-with-components, make test-template-auth,
make test-template-worker, make test-template-database,
make test-template-full, make test-template-ai,
make test-template-ai-memory, make test-template-ai-sqlite.make test-stacks-quick while iterating on a cross-cutting template change
(fast feedback against a representative subset: base, everything, insights).make test-stacks-full before calling multi-component template work done
(generation-only pass, the slow build/validation pass, and the kitchen-sink
everything stack).make check for any non-template Python change made along the way (for
example, editing copier_manager.py or manual_updater.py).make clean-test-projects to remove generated test project directories
once verification is done.{% if %}...{% endif %} wrap
only. Never use Copier conditional filenames; that convention broke on
Windows and is banned outright.docker-compose.yml.jinja or its .dev/.prod
variants. Which components a given project selects varies per stack, so a
comment written for one combination misleads for another; state conditions
through the Jinja gate itself.copier.yml question needs a matching line in
.copier-answers.yml.jinja, except fields gated by a when: clause.
Copier itself drops when-gated answers from the rendered answers file
(observed for worker_backend, scheduler_backend, include_oauth), so
the actual persistence path for those is copier_manager.py's
post-generation backfill loop, which patches any copier_data key Copier
dropped directly into the written .copier-answers.yml. Adding a
when-gated field to the .jinja list anyway is harmless but is not what
makes it survive.copier is pinned below 9.15 in pyproject.toml (9.15+ relocates
.copier-answers.yml out of the generated project directory, breaking
aegis update). A dependabot ignore rule blocks upgrade PRs past that
ceiling; do not bump the pin even if a bot proposes it.uv.lock hides fresh-install dependency drift. Validate a template
dependency change (new pyproject.toml.jinja gates, new packages) with
uvx or a fresh uv sync inside a freshly generated project, not the
locally locked dev environment, since the lock file can mask a resolution
that only fails on a clean install.© lbedner, 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/template-dev of lbedner/aegis-stack.
Open the folder on GitHubat commit c8cbfad
Template Dev 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 |
|---|---|---|---|---|---|---|
| Template Dev this skilllbedner/aegis-stack | 143 | — | ~2.9k | Automated safety check: Pass | MIT | |
| AWS Harnesshoodini/ai-agents-skills | 282 | — | ~4.2k | Automated safety check: Notes | None | |
| Deps Bumplkmeta/txtify | 135 | — | ~585 | Automated safety check: Pass | Apache-2.0 | |
| Flowfile Debugging PlaybookEdwardvaneechoud/Flowfile | 370 | — | ~6.3k | Automated safety check: Pass | MIT | |
| Senior Fullstackalirezarezvani/claude-skills | 28k | 1 repos | ~3.7k | Automated safety check: Notes | MIT | |
| Senior Fullstackborghei/Claude-Skills | 874 | — | ~1.7k | Automated safety check: Pass | MIT |
hoodini/ai-agents-skills
Build a new AI agent on AWS and deploy it easily, OR wrap and deploy an agent you already have, using the Amazon Bedrock AgentCore harness.
lkmeta/txtify
Safely update Txtify dependencies or resolve Dependabot alerts.
Edwardvaneechoud/Flowfile
Symptom-to-cause triage playbook for Flowfile (core/worker/kernel/frontend/AI) — covers "no such table" DB cascades (two distinct causes), import-time Alembic migration corruption, silent…
alirezarezvani/claude-skills
Fullstack development toolkit with project scaffolding for Next.js, FastAPI, MERN, and Django stacks, code quality analysis with security and complexity scoring, and stack selection guidance.
borghei/Claude-Skills
Fullstack development toolkit with project scaffolding for Next.js/FastAPI/MERN/Django stacks and code quality analysis.
fike/fastapi-blog
Skill for identifying code smells and refactoring code using Clean Code, SOLID, and DRY principles.
lbedner/aegis-stack
A skill your agent uses when cutting a release of the aegis-stack package.
lbedner/aegis-stack
A skill your agent uses when adding a command to the aegis tool CLI (the framework's own aegis ...
lbedner/aegis-stack
A skill your agent uses when building an Aegis Stack plugin, a separate package (aegis-stack-<name) that renders files into a project through aegis add <name.
lbedner/aegis-stack
A skill your agent uses when handed a GitHub issue (number or URL) to execute end to end.
lbedner/aegis-stack
A skill your agent uses when a code or template change introduces a new translation message key, in either the framework CLI (aegis/i18n/locales/) or a generated project's CLI (the app/i18n/locales/…
lbedner/aegis-stack
A skill your agent uses when collapsing a feature branch into a single commit before opening or merging a PR.
A skill your agent uses when developing or modifying Copier templates in aegis/templates, or backporting a change from a generated project (e.g. Template Dev is an agent skill from lbedner/aegis-stack.g.
Template Dev fits situations like: modifying Copier templates in aegis/templates; backporting a change from a generated project (e.g.
Run `npx skills add lbedner/aegis-stack --skill template-dev -a claude-code`. Or copy the skill folder (.claude/skills/template-dev in lbedner/aegis-stack) into .claude/skills/template-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lbedner/aegis-stack --skill template-dev -a codex`. Or copy the skill folder (.claude/skills/template-dev in lbedner/aegis-stack) into .agents/skills/template-dev 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 lbedner/aegis-stack --skill template-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/template-dev, .gemini/skills/template-dev, .github/skills/template-dev and .opencode/skills/template-dev in your project.
Going by SKILL.md and its folder, Template Dev needs the command-line tools its instructions call (make and uv). Our summary lists: Python 3; Docker.
SKILL.md contains no URLs. Its commands use uv, 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.
Template Dev is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Template Dev: AWS Harness (hoodini/ai-agents-skills, 282 stars), Deps Bump (lkmeta/txtify, 135 stars), Flowfile Debugging Playbook (Edwardvaneechoud/Flowfile, 370 stars) and Senior Fullstack (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lbedner (a GitHub user) maintains it in lbedner/aegis-stack, which has 143 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.
Source: lbedner/aegis-stack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.