bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
Your agent forgets the brief every new thread. The same moves, run by your agents, inspectable when they fail.
SkillsJavaScript · PythonGitHub @cmj-hubOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Sales prospecting skill for Claude Code. Sales prospecting builds the B2B prospect list you are willing to write to. The scorer refuses a title-only list.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Sales prospecting builds the B2B prospect list you are willing to write to.
Ops lead at Northwind posted a role for an outbound lead this week.
The good draft says call this week. A title-only list fails the score.
The build guide teaches a human. The pack teaches an agent.
The skill then loads as prospect-list:who-to-contact. Ask Claude who to call this week, or hand it a list of titles.
For every agent host the skills installer knows:Read the full README ↗Sales prospecting builds the B2B prospect list you are willing to write to.
/plugin marketplace add cmj-hub/gtm-operator-skills
/plugin install prospect-list@gtm-operator-skills
/prospect-list:who-to-contact
Or score the sample without an agent:
python3 skills/who-to-contact/scripts/score.py --file skills/who-to-contact/examples/list-good.json # exit 0, prints title, signal, score, then "Next: /cold-email:cold-email"
python3 skills/who-to-contact/scripts/score.py --file skills/who-to-contact/examples/list-title.json # exit 1: - missing signal (a title with no signal is a directory, not a list) → write one thing they did this window, or leave them off
Part of the GTM operator suite: /plugin install gtm@gtm-operator-skills installs all ten.
Add the gtm-operator mod to see the suite's next step above your prompt and keep brand-config.json from being overwritten: /plugin install gtm-operator@gtm-operator-skills.
Ops lead at Northwind posted a role for an outbound lead this week.
The good draft says call this week. A title-only list fails the score.
The build guide teaches a human. The pack teaches an agent.
As a Claude Code plugin:
/plugin marketplace add cmj-hub/claude-prospect-list
/plugin install prospect-list@claude-prospect-list
The skill then loads as /prospect-list:who-to-contact. Ask Claude who to call this week, or hand it a list of titles. /prospect-list:who-to-contact score scores the draft already in gtm/list.json.
For every agent host the skills installer knows:
npx skills add cmj-hub/claude-prospect-list --all -g --full-depth
One host:
npx skills add cmj-hub/claude-prospect-list --skill '*' -g --full-depth -y -a claude-code
Swap claude-code for cursor, codex, grok, github-copilot, windsurf, cline, or opencode. The scorer is Python in this repo. It does not call a paid API, and it does not buy data.
The same pack is on npm as @jmc-gtm/claude-prospect-list, released from this repo's version tags with npm provenance. It has no dependencies and no install scripts.
In a project, for any agent host the skills installer knows (experimental_sync is still marked experimental there):
npm install -D @jmc-gtm/claude-prospect-list
npx skills experimental_sync -a claude-code -y
In your own Claude Code plugin marketplace, point an entry at the package:
{ "name": "prospect-list", "source": { "source": "npm", "package": "@jmc-gtm/claude-prospect-list" } }
cd skills/who-to-contact
python3 scripts/score.py --file examples/list-good.json
python3 scripts/score.py --file examples/list-title.json
The good draft exits 0 and prints a list score from a signal. The title-only draft exits 1 and prints one - what is wrong → what to change line for each gap, then Next: fix the lines above and run this again. A persona label in place of a signal, or a score that is not call this week, hold, or drop, fails too. Add --json for one result object (fixes and next included). Then drop in yours at gtm/list.json in your project.
| Path | What it is |
|---|---|
skills/who-to-contact/SKILL.md | The skill: what a signal is, how to pick the slot, the checklist. |
skills/who-to-contact/scripts/score.py | The scorer. Exit 0 scored, 1 refused, 2 unreadable input. |
skills/who-to-contact/examples/ | Good, hold, title-only, and persona-label drafts. |
.claude-plugin/ | Plugin and marketplace manifests for Claude Code, and the plugin icon. |
tests/ | python3 -m unittest discover -s tests |
It will not send the list. It does not buy data. It will not accept a title-only list.
This pack scores who earns a slot this week from a public signal. Building the company universe and verifying emails sit outside the pack.
A found address is not sendable until verify returns deliverable.
The people a public signal puts on this week's list. A job title with no signal is not a prospect yet.
No. You bring the signal. The pack scores the slot: call, hold, or drop.
Growth Audit: architecture gaps in the GTM you already run. Free written report.
Friday Signal: one Friday GTM read. No pitch in it.
The scorer is standard-library Python and opens no network connection. It reads only the draft you give it; the skill writes gtm/list.json, reads brand-config.json and never writes to it. No telemetry, no credentials, no lookups, and nothing is sent. See SECURITY.md.
Previous: Email sequence
Next: GTM skills for Claude Code
MIT. Python 3 standard library only.