bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
A shared library of skills that teach AI coding agents how to do specific tasks consistently
AI summary · revised during review
SkillsShellGitHub @yldioSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
Loading the full README. The saved excerpt is shown below.
Shared skills for AI coding agents, maintained for everyone at YLD.
A skill is a folder with a SKILL.md file in it. The file tells an agent how to do one kind of task well, such as running a release or writing a status update in the way we expect. When the agent sees a matching request it loads the instructions and follows them. A skill can also carry scripts, templates and reference documents that the agent reads only when it needs them.Read the full README ↗Shared skills for AI coding agents, maintained for everyone at YLD.
A skill is a folder with a SKILL.md file in it. The file tells an agent how to do one kind of task well, such as running a release or writing a status update in the way we expect. When the agent sees a matching request it loads the instructions and follows them. A skill can also carry scripts, templates and reference documents that the agent reads only when it needs them.
This repository holds the skills specific to how YLD works, the ones we want every YLD engineer to have. Keeping them in one place means a fix lands once and everyone picks it up on their next pull, instead of each person maintaining their own copy.
The folders follow the open Agent Skills format, so they work in Claude Code and in any other tool that supports it.
Skills are grouped into one plugin per team, so a team's skills can be installed together. Each plugin lives in plugins/<plugin>/ and holds its skills in plugins/<plugin>/skills/<skill-name>/SKILL.md. The list of plugins is in .claude-plugin/marketplace.json.
| Plugin | Team | Skills |
|---|---|---|
yld-engineering | Engineering | eli5, forensic-investigation, forensic-report, table-me, unslop, zoom-out |
yld-design | Product Design | compare-ds-components, component-documentation, ds-pr-review, eow-summary, interview-insights |
yld-marketing | Marketing | campaign-plan |
yld-cp | Client Partners | business-review-prep |
yld-general | Anyone | skill-to-notion |
Every skill is also a plugin of its own, so people can add one skill without the rest of its team's plugin. These single-skill plugins live in plugins/<skill-name>/, and their skills/<skill-name> folder is a copy of the skill from its team plugin. Claude's organisation sync does not follow symlinks, so it has to be a real copy. The team plugin's version is the source: edit only that one, then run mise run singles to refresh the copies. CI fails when a copy is out of date. Add either the team plugin or the single skill, not both, or the skill will load twice.
Add this repository as a plugin marketplace once, then install the plugins you want. Each plugin brings all of its team's skills:
/plugin marketplace add yldio/skills
/plugin install yld-design@yld-skills
Skills from a plugin are called as /<plugin>:<skill-name>, for example /yld-design:eow-summary. /plugin marketplace update yld-skills picks up changes.
The easiest way is the skills.sh CLI, which you run with npx so there is nothing to install first. It detects the agents you have and puts each skill where that agent reads from:
npx skills add yldio/skills
That lists the skills in this repository and asks which ones you want and which agents to install them for. Useful variants:
# All skills, personal install (user-level, e.g. ~/.claude/skills)
npx skills add yldio/skills -s '*' -g
# Just one skill
npx skills add yldio/skills -s forensic-report
# For specific agents (repeat -a for more than one)
npx skills add yldio/skills -a claude-code
Without -g the skill installs into the current project, which is what you want when it should apply only within one project. With -g it installs once for your account and is available in every project.
Managing installed skills:
npx skills update # bring installed skills up to date
npx skills list # which skills are installed and where
npx skills remove <name> # uninstall a skill
Start a new session and the skills are available. In Claude Code you can call one directly with /<skill-name>, or describe the task and let the agent choose.
If you would rather skip npx, clone the repository somewhere you will keep it:
git clone [email protected]:yldio/skills.git ~/yld/skills
Link the skills you want into the directory your tool reads from. Claude Code reads personal skills from ~/.claude/skills:
mkdir -p ~/.claude/skills
ln -s ~/yld/skills/plugins/<plugin>/skills/<skill-name> ~/.claude/skills/<skill-name>
To make all of them available at once:
mkdir -p ~/.claude/skills
for d in ~/yld/skills/plugins/*/skills/*/; do
ln -sfn "$d" ~/.claude/skills/$(basename "$d")
done
Run git pull in your clone now and then to get updates. Skills installed this way are not tracked by npx skills list or npx skills update.
Standard skills for widely used tools and frameworks already exist in public collections, for example anthropics/skills. Use those rather than writing our own version. Install them the same way as the skills in this repository, for example npx skills add anthropics/skills, or clone the collection and link the folders you want into ~/.claude/skills.
If you find a community skill worth recommending to everyone at YLD, open a pull request that adds a link to it in this section. Do not copy the files into this repository, as the copy will drift from the original and nobody will maintain it.
Create a folder named after the skill, lowercase with hyphens, in your team's plugin: plugins/<plugin>/skills/<skill-name>/. Name it for what it does, without a team prefix, and check no other skill in the repository uses the name. This name is what people will type, and it must match name in the frontmatter. Do not put skills at the top level of the repository: they are not part of any plugin, so Claude will not offer them.
Then make it available on its own as well. Create plugins/<skill-name>/.claude-plugin/plugin.json (copy one from another single-skill plugin, such as plugins/eow-summary/), and run mise run singles, which copies the skill folder into it. Then add an entry after the existing single-skill entries in .claude-plugin/marketplace.json:
{ "name": "<skill-name>", "displayName": "/<skill-name>", "source": "./plugins/<skill-name>", "description": "<first sentence of the skill's description>" }
Claude only offers plugins that have their own folder and plugin.json; an entry in marketplace.json alone is not enough, and neither is a symlink to the skill.
When you change an existing skill, edit it in its team plugin and run mise run singles before you commit, so its single-skill copy matches.
For a team that has no plugin yet, add plugins/yld-<team>/.claude-plugin/plugin.json (copy an existing one) and an entry for it in .claude-plugin/marketplace.json. Check both with claude plugin validate ..
Write SKILL.md with frontmatter followed by the instructions:
---
name: release-notes
description: Draft release notes from merged pull requests. Use when asked to write or publish release notes for a version.
---
The instructions the agent follows once the skill is loaded.
The description decides when the agent picks the skill, so state what it does and when it applies. Keep the body short and specific. Long reference material goes in separate files in the same folder, with a line in SKILL.md telling the agent when to read them.
If the skill should run only when a person asks for it, add disable-model-invocation: true to the frontmatter:
---
name: deploy-production
description: Deploy the current release to production.
disable-model-invocation: true
---
The agent will then never start the skill on its own. The only way to run it is to type its command, for example /yld-engineering:deploy-production. Use this for anything with side effects, such as deploying, publishing or sending messages, where the agent guessing wrong would cost something.
Write skills for the whole company rather than for one project. A skill that only makes sense inside one codebase belongs in that codebase.
model in a skill's frontmatter. Skills run on whatever model the person using them has chosen, and a pinned model stops working when that model is retired.SKILL.md so the person running it knows beforehand.Apache 2.0. See LICENSE.
Put helper scripts in scripts/, templates in assets/ and background reading in references/.
Try it on a real task before opening a pull request. Put the prompt you used and what came out in the PR description.
Open a pull request against main.