bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
A plain-Markdown Obsidian vault with Claude Code and Kiro hooks that keep your AI agent following the vault's rules.
SkillsGitHub @shaynemeyerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
A plain-Markdown Obsidian vault with Claude Code and Kiro hooks that keep your AI agent following the rules: files notes in place, appends, and archives instead of deleting.
Loading the full README.
Read the full README ↗A plain-Markdown notes vault for Obsidian, with Claude Code and Kiro hooks that keep the AI agent following the vault's rules.
Website: https://shaynemeyer.github.io/vault-template/
bash, jq, python3gh (optional; see Setup for alternatives)| Platform | Status |
|---|---|
| macOS | Supported; tested with Claude Code |
| Windows | Not yet proven; work in progress |
On Windows, the hooks are bash scripts and need Git Bash and jq. Without Git
Bash, Claude Code runs hooks in PowerShell, where they fail
(Claude Code hooks). Full Windows
support is being tested.
Create your vault from this template:
gh repo create my-vault --private --template OWNER/vault-template --clone
Keep your vault private. It will hold your notes.
A private GitHub repo is one way to store and back up the vault. A folder in iCloud Drive, Dropbox, OneDrive or Google Drive, or Obsidian Sync, works too. Use one sync method per vault. See Where to store your vault.
Without gh: click Use this template on GitHub, create a private repo,
then git clone it. Or click Code, then Download ZIP to keep the vault
local. The user guide has details.
Open the my-vault folder as a vault in Obsidian.
Edit CLAUDE.md: set the title and adjust the rules to taste.
Start Claude Code or Kiro from the vault root. The hook paths are relative to it.
| Folder | Purpose |
|---|---|
_inbox/ | Quick captures. Process within 7 days. |
daily/ | One note per day, YYYY-MM-DD.md. Append-only. |
projects/ | Active work only. Archive after 2 weeks untouched. |
people/ | One folder per regular contact. Used for 1:1 prep. |
_archive/ | Dormant material. Archive is not delete. |
CLAUDE.md holds the rules the agent follows. Each folder's README.md
describes it in more detail.
Slash commands live in .claude/commands/ (Claude Code only; Kiro doesn't
read them).
| Command | What it does |
|---|---|
/capture <text> | Saves a quick note to _inbox/<date>-<slug>.md |
/daily | Creates today's daily note, or adds missing template sections |
/process-inbox | Proposes a destination for each inbox note; moves on approval |
/plan | Ranks active projects and names the next action |
/weekly-review | Summarizes the week and flags stale inbox notes and projects |
Example reviews tailored to a way of working. Keep the ones that fit and delete
the rest; /weekly-review works for everyone. See the
user guide
for example workflows.
| Command | For | Relies on |
|---|---|---|
/weekly-review-pm | Product managers | projects/sprint-*/, relationship: direct-report |
/weekly-review-founder | Founders | projects/<project>/decisions.md |
/weekly-review-freelancer | Freelancers | projects/<client>/scope.md with billing |
/weekly-review-kw | Knowledge workers | people/<name>/open-asks.md, #later tags |
Scripts live in .claude/hooks/. Claude Code registers them in
.claude/settings.json; Kiro registers them in .kiro/hooks/vault-hooks.json.
| Hook | What it does | Claude Code | Kiro |
|---|---|---|---|
session-start.sh | Loads CLAUDE.md into context | Yes | Yes |
user-prompt-submit.sh | Adds a folder-rules reminder to each prompt | Yes | Yes |
post-tool-use.py | Logs file edits to today's daily note | Yes | Not yet |
stop.sh | Asks the agent to log decisions at end of turn | Yes | Not yet |
pre-compact.sh | Asks the agent to log decisions before compaction | Yes | No equivalent |
post-tool-use.py and stop.sh aren't wired into Kiro yet: Kiro's docs don't
specify the event fields they need.
Docs: Claude Code hooks, Kiro hooks.
The agent can read anything in the vault, and so can your sync or backup provider. Don't store passwords, keys or other secrets here.
To keep a folder away from Claude Code, you need both a Read deny rule and
the sandbox in .claude/settings.json. Either one alone leaks: the deny rule
misses grep -r and scripts, and the sandbox misses the Read tool.
{
"permissions": { "deny": ["Read(./private/**)"] },
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"failIfUnavailable": true,
"filesystem": { "denyRead": ["./private"] }
}
}
This is the beginning of the README. Read the rest at the original. Read the full README ↗