bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证了解你的 AI 代理构建了什么,以及它何时使用了默认设置。一个针对 Claude Code、Codex 和 OpenCode 的技能+插件,向你简要说明决策、来源和失败模式,帮助你通过白板防御。
AI 翻译
Know what your AI agent built, and where it just used its defaults. A skill + plugin for Claude Code, Codex and OpenCode that briefs you on decisions, provenance, and failure modes so you can pass the whiteboard defense.
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Know what your AI agent built, and where it just used its defaults.
A skill and plugin for Claude Code, Codex, and OpenCode. After substantial work, it briefs you on how the thing works, which decisions were made, who made each one (you, the context, or the agent's habit), where it fails, and the questions you should be able to answer if someone pulled you aside at a whiteboard.查看完整 README ↗Know what your AI agent built, and where it just used its defaults.
A skill and plugin for Claude Code, Codex, and OpenCode. After substantial work, it briefs you on how the thing works, which decisions were made, who made each one (you, the context, or the agent's habit), where it fails, and the questions you should be able to answer if someone pulled you aside at a whiteboard.
Site: https://github.avestura.dev/whiteboard-defense/
Mitchell Hashimoto's whiteboard defense: you should be able to explain any customer-facing system you shipped and defend its decisions, even if you did not write the code. PoCs and demos are exempt. Anything customers touch is not.
Agents make dozens of decisions you never see. Many are not decisions at all, but defaults: the same logo idea, the same slide-deck mechanics, the same stack. Anthropic's own advice for Opus 5.5 is to name the styles you do not want, because a general "avoid generic" mostly swaps one default for another. This project extends that idea past design: it tells you where defaults were used, so you can steer next time.
One command. It installs for every supported agent it finds on your PATH.
macOS / Linux / Git Bash:
curl -fsSL https://raw.githubusercontent.com/avestura/whiteboard-defense/main/install.sh | sh
Windows PowerShell:
irm https://raw.githubusercontent.com/avestura/whiteboard-defense/main/install.ps1 | iex
Pick agents explicitly: ... | sh -s -- claude codex opencode. Remove with --uninstall.
Claude Code
claude plugin marketplace add avestura/whiteboard-defense
claude plugin install whiteboard-defense@whiteboard-defense
Run it with /whiteboard-defense:whiteboard.
Codex: copy the skill into your personal skills directory, then run $whiteboard.
git clone https://github.com/avestura/whiteboard-defense && cp -r whiteboard-defense/plugins/whiteboard-defense/skills/whiteboard ~/.agents/skills/
There is also a Codex plugin marketplace entry: codex plugin marketplace add avestura/whiteboard-defense, then install it from the plugins directory in the app.
OpenCode: same skill directory (~/.agents/skills is read by OpenCode too), plus the command file.
cp -r whiteboard-defense/plugins/whiteboard-defense/skills/whiteboard ~/.agents/skills/
cp whiteboard-defense/opencode/commands/whiteboard.md ~/.config/opencode/commands/
Run it with /whiteboard.
| Command | What you get |
|---|---|
| (automatic) | A short digest after each substantial task. Chat-only digest, full brief saved to .whiteboard/. |
/whiteboard | Full brief for the current work. |
/whiteboard full <PR, branch, or path> | Full brief for something that already exists. |
/whiteboard defaults | Only the "defaults I relied on" section, with paste-ready Avoid: lines. |
/whiteboard quiz | One question at a time, graded against the real code. |
/whiteboard config | Show or change preferences. |
(Claude Code prefixes the plugin name: /whiteboard-defense:whiteboard. Codex uses $whiteboard.)
A brief tags every decision:
Create .whiteboard/config.json in a project, or ~/.config/whiteboard-defense/config.json globally. Or just tell the agent "turn off automatic whiteboard briefs".
{
"auto": "short",
"output": "both",
"directory": ".whiteboard",
"minimumSize": "substantial"
}
auto: short (default, a cheap chat-only digest), full, suggest (Claude Code: a "Brief me" button, no extra turn), or offoutput: both (default), chat, or filetier: set "poc" to skip automatic briefs in a project that is a demoIn Claude Code the plugin also draws in the interface. This is on by default:
N files changed since last brief [Brief me], then after a brief, 8 decisions · 2 DEFAULT · 1 GUESS [Open] [Quiz me] [Hide].Open): every decision with its colored tag, each default with its catalogue ID and a copy button for its Avoid: line, the weakest point, and the question to be ready for.wb: 2 default, 1 guess..whiteboard/ are not counted, and auto: "off" or tier: "poc" in .whiteboard/config.json turn it off; auto: "suggest" keeps the button but spends no tokens until you press it.Switch back to the plain skill at any time:
/whiteboard-ui prompt # skill only: no band, pane, status or automatic trigger
/whiteboard-ui rich # back to the UI
The same settings (ui, auto, autoThreshold) are rows in /config.
Codex and OpenCode use the skill alone. OpenCode's v2 plugin API has UI slots and panels too; a port is possible but not built yet.
Honest limits, because a tool about honesty should have them:
[DEFAULT] means "you did not specify it, nothing forced it, and it matches a habitual pattern" and not "proven model bias".[GUESS]./whiteboard. Claude Code's rich UI triggers them from the plugin instead..claude-plugin/marketplace.json Claude Code marketplace
.agents/plugins/marketplace.json Codex marketplace
plugins/whiteboard-defense/
.claude-plugin/plugin.json Claude Code manifest
plugin.json Codex / portable manifest
hooks/register.tsx Claude Code UI: band, pane, status, auto-trigger
types/index.d.ts its state contract
tests/register.test.ts run with: claude plugin test plugins/whiteboard-defense
skills/whiteboard/
SKILL.md the skill (shared by all three agents)
references/defaults-catalogue.md known default patterns
references/brief-template.md
opencode/commands/whiteboard.md OpenCode slash command
evals/ catalogue-matching regression evals (real sessions)
scripts/catalogue-index.mjs regenerates the catalogue index inside SKILL.md
install.sh, install.ps1 one-command installers
docs/ GitHub Pages site
MIT