diff --git a/.claude/skills/ab-test-setup/SKILL.md b/.agents/skills/ab-test-setup/SKILL.md similarity index 100% rename from .claude/skills/ab-test-setup/SKILL.md rename to .agents/skills/ab-test-setup/SKILL.md diff --git a/.claude/skills/ab-test-setup/evals/evals.json b/.agents/skills/ab-test-setup/evals/evals.json similarity index 100% rename from .claude/skills/ab-test-setup/evals/evals.json rename to .agents/skills/ab-test-setup/evals/evals.json diff --git a/.claude/skills/ab-test-setup/references/sample-size-guide.md b/.agents/skills/ab-test-setup/references/sample-size-guide.md similarity index 100% rename from .claude/skills/ab-test-setup/references/sample-size-guide.md rename to .agents/skills/ab-test-setup/references/sample-size-guide.md diff --git a/.claude/skills/ab-test-setup/references/test-templates.md b/.agents/skills/ab-test-setup/references/test-templates.md similarity index 100% rename from .claude/skills/ab-test-setup/references/test-templates.md rename to .agents/skills/ab-test-setup/references/test-templates.md diff --git a/.claude/skills/ad-creative/SKILL.md b/.agents/skills/ad-creative/SKILL.md similarity index 100% rename from .claude/skills/ad-creative/SKILL.md rename to .agents/skills/ad-creative/SKILL.md diff --git a/.claude/skills/ad-creative/evals/evals.json b/.agents/skills/ad-creative/evals/evals.json similarity index 100% rename from .claude/skills/ad-creative/evals/evals.json rename to .agents/skills/ad-creative/evals/evals.json diff --git a/.claude/skills/ad-creative/references/generative-tools.md b/.agents/skills/ad-creative/references/generative-tools.md similarity index 100% rename from .claude/skills/ad-creative/references/generative-tools.md rename to .agents/skills/ad-creative/references/generative-tools.md diff --git a/.claude/skills/ad-creative/references/platform-specs.md b/.agents/skills/ad-creative/references/platform-specs.md similarity index 100% rename from .claude/skills/ad-creative/references/platform-specs.md rename to .agents/skills/ad-creative/references/platform-specs.md diff --git a/.claude/skills/ai-seo/SKILL.md b/.agents/skills/ai-seo/SKILL.md similarity index 100% rename from .claude/skills/ai-seo/SKILL.md rename to .agents/skills/ai-seo/SKILL.md diff --git a/.claude/skills/ai-seo/evals/evals.json b/.agents/skills/ai-seo/evals/evals.json similarity index 100% rename from .claude/skills/ai-seo/evals/evals.json rename to .agents/skills/ai-seo/evals/evals.json diff --git a/.claude/skills/ai-seo/references/content-patterns.md b/.agents/skills/ai-seo/references/content-patterns.md similarity index 100% rename from .claude/skills/ai-seo/references/content-patterns.md rename to .agents/skills/ai-seo/references/content-patterns.md diff --git a/.claude/skills/ai-seo/references/platform-ranking-factors.md b/.agents/skills/ai-seo/references/platform-ranking-factors.md similarity index 100% rename from .claude/skills/ai-seo/references/platform-ranking-factors.md rename to .agents/skills/ai-seo/references/platform-ranking-factors.md diff --git a/.claude/skills/analytics-tracking/SKILL.md b/.agents/skills/analytics-tracking/SKILL.md similarity index 100% rename from .claude/skills/analytics-tracking/SKILL.md rename to .agents/skills/analytics-tracking/SKILL.md diff --git a/.claude/skills/analytics-tracking/evals/evals.json b/.agents/skills/analytics-tracking/evals/evals.json similarity index 100% rename from .claude/skills/analytics-tracking/evals/evals.json rename to .agents/skills/analytics-tracking/evals/evals.json diff --git a/.claude/skills/analytics-tracking/references/event-library.md b/.agents/skills/analytics-tracking/references/event-library.md similarity index 100% rename from .claude/skills/analytics-tracking/references/event-library.md rename to .agents/skills/analytics-tracking/references/event-library.md diff --git a/.claude/skills/analytics-tracking/references/ga4-implementation.md b/.agents/skills/analytics-tracking/references/ga4-implementation.md similarity index 100% rename from .claude/skills/analytics-tracking/references/ga4-implementation.md rename to .agents/skills/analytics-tracking/references/ga4-implementation.md diff --git a/.claude/skills/analytics-tracking/references/gtm-implementation.md b/.agents/skills/analytics-tracking/references/gtm-implementation.md similarity index 100% rename from .claude/skills/analytics-tracking/references/gtm-implementation.md rename to .agents/skills/analytics-tracking/references/gtm-implementation.md diff --git a/.claude/skills/churn-prevention/SKILL.md b/.agents/skills/churn-prevention/SKILL.md similarity index 100% rename from .claude/skills/churn-prevention/SKILL.md rename to .agents/skills/churn-prevention/SKILL.md diff --git a/.claude/skills/churn-prevention/evals/evals.json b/.agents/skills/churn-prevention/evals/evals.json similarity index 100% rename from .claude/skills/churn-prevention/evals/evals.json rename to .agents/skills/churn-prevention/evals/evals.json diff --git a/.claude/skills/churn-prevention/references/cancel-flow-patterns.md b/.agents/skills/churn-prevention/references/cancel-flow-patterns.md similarity index 100% rename from .claude/skills/churn-prevention/references/cancel-flow-patterns.md rename to .agents/skills/churn-prevention/references/cancel-flow-patterns.md diff --git a/.claude/skills/churn-prevention/references/dunning-playbook.md b/.agents/skills/churn-prevention/references/dunning-playbook.md similarity index 100% rename from .claude/skills/churn-prevention/references/dunning-playbook.md rename to .agents/skills/churn-prevention/references/dunning-playbook.md diff --git a/.claude/skills/cold-email/SKILL.md b/.agents/skills/cold-email/SKILL.md similarity index 100% rename from .claude/skills/cold-email/SKILL.md rename to .agents/skills/cold-email/SKILL.md diff --git a/.claude/skills/cold-email/evals/evals.json b/.agents/skills/cold-email/evals/evals.json similarity index 100% rename from .claude/skills/cold-email/evals/evals.json rename to .agents/skills/cold-email/evals/evals.json diff --git a/.claude/skills/cold-email/references/benchmarks.md b/.agents/skills/cold-email/references/benchmarks.md similarity index 100% rename from .claude/skills/cold-email/references/benchmarks.md rename to .agents/skills/cold-email/references/benchmarks.md diff --git a/.claude/skills/cold-email/references/follow-up-sequences.md b/.agents/skills/cold-email/references/follow-up-sequences.md similarity index 100% rename from .claude/skills/cold-email/references/follow-up-sequences.md rename to .agents/skills/cold-email/references/follow-up-sequences.md diff --git a/.claude/skills/cold-email/references/frameworks.md b/.agents/skills/cold-email/references/frameworks.md similarity index 100% rename from .claude/skills/cold-email/references/frameworks.md rename to .agents/skills/cold-email/references/frameworks.md diff --git a/.claude/skills/cold-email/references/personalization.md b/.agents/skills/cold-email/references/personalization.md similarity index 100% rename from .claude/skills/cold-email/references/personalization.md rename to .agents/skills/cold-email/references/personalization.md diff --git a/.claude/skills/cold-email/references/subject-lines.md b/.agents/skills/cold-email/references/subject-lines.md similarity index 100% rename from .claude/skills/cold-email/references/subject-lines.md rename to .agents/skills/cold-email/references/subject-lines.md diff --git a/.claude/skills/competitor-alternatives/SKILL.md b/.agents/skills/competitor-alternatives/SKILL.md similarity index 100% rename from .claude/skills/competitor-alternatives/SKILL.md rename to .agents/skills/competitor-alternatives/SKILL.md diff --git a/.claude/skills/competitor-alternatives/evals/evals.json b/.agents/skills/competitor-alternatives/evals/evals.json similarity index 100% rename from .claude/skills/competitor-alternatives/evals/evals.json rename to .agents/skills/competitor-alternatives/evals/evals.json diff --git a/.claude/skills/competitor-alternatives/references/content-architecture.md b/.agents/skills/competitor-alternatives/references/content-architecture.md similarity index 100% rename from .claude/skills/competitor-alternatives/references/content-architecture.md rename to .agents/skills/competitor-alternatives/references/content-architecture.md diff --git a/.claude/skills/competitor-alternatives/references/templates.md b/.agents/skills/competitor-alternatives/references/templates.md similarity index 100% rename from .claude/skills/competitor-alternatives/references/templates.md rename to .agents/skills/competitor-alternatives/references/templates.md diff --git a/.claude/skills/content-strategy/SKILL.md b/.agents/skills/content-strategy/SKILL.md similarity index 100% rename from .claude/skills/content-strategy/SKILL.md rename to .agents/skills/content-strategy/SKILL.md diff --git a/.claude/skills/content-strategy/evals/evals.json b/.agents/skills/content-strategy/evals/evals.json similarity index 100% rename from .claude/skills/content-strategy/evals/evals.json rename to .agents/skills/content-strategy/evals/evals.json diff --git a/.claude/skills/content-strategy/references/headless-cms.md b/.agents/skills/content-strategy/references/headless-cms.md similarity index 100% rename from .claude/skills/content-strategy/references/headless-cms.md rename to .agents/skills/content-strategy/references/headless-cms.md diff --git a/.claude/skills/copy-editing/SKILL.md b/.agents/skills/copy-editing/SKILL.md similarity index 100% rename from .claude/skills/copy-editing/SKILL.md rename to .agents/skills/copy-editing/SKILL.md diff --git a/.claude/skills/copy-editing/evals/evals.json b/.agents/skills/copy-editing/evals/evals.json similarity index 100% rename from .claude/skills/copy-editing/evals/evals.json rename to .agents/skills/copy-editing/evals/evals.json diff --git a/.claude/skills/copy-editing/references/plain-english-alternatives.md b/.agents/skills/copy-editing/references/plain-english-alternatives.md similarity index 100% rename from .claude/skills/copy-editing/references/plain-english-alternatives.md rename to .agents/skills/copy-editing/references/plain-english-alternatives.md diff --git a/.claude/skills/copywriting/SKILL.md b/.agents/skills/copywriting/SKILL.md similarity index 100% rename from .claude/skills/copywriting/SKILL.md rename to .agents/skills/copywriting/SKILL.md diff --git a/.claude/skills/copywriting/evals/evals.json b/.agents/skills/copywriting/evals/evals.json similarity index 100% rename from .claude/skills/copywriting/evals/evals.json rename to .agents/skills/copywriting/evals/evals.json diff --git a/.claude/skills/copywriting/references/copy-frameworks.md b/.agents/skills/copywriting/references/copy-frameworks.md similarity index 100% rename from .claude/skills/copywriting/references/copy-frameworks.md rename to .agents/skills/copywriting/references/copy-frameworks.md diff --git a/.claude/skills/copywriting/references/natural-transitions.md b/.agents/skills/copywriting/references/natural-transitions.md similarity index 100% rename from .claude/skills/copywriting/references/natural-transitions.md rename to .agents/skills/copywriting/references/natural-transitions.md diff --git a/.agents/skills/create-skill/SKILL.md b/.agents/skills/create-skill/SKILL.md new file mode 100644 index 0000000..fcf5e56 --- /dev/null +++ b/.agents/skills/create-skill/SKILL.md @@ -0,0 +1,59 @@ +--- +name: create-skill +description: Create a new agent skill in .agents/skills. Use when the user wants to add a reusable workflow, instruction pack, or tool-specific capability for agents. +allowed-tools: Read, Write, Edit, Bash(ls:*), Bash(mkdir:*), Bash(find:*) +--- + +# Create New Agent Skill + +Help the user create a new agent skill under `.agents/skills`. + +## Process + +1. Understand the reusable workflow + - What should the skill help the agent do? + - When should the skill be used? + - Does it need scripts, references, templates, assets, or evals? + +2. Design the skill structure + - Use a kebab-case skill directory name. + - Create `.agents/skills//SKILL.md`. + - Add optional supporting folders only when they are useful. + +3. Write the skill + - Include YAML frontmatter with `name` and `description`. + - Make the description trigger-oriented, so the agent knows when to use it. + - Keep instructions operational and specific. + - Put bulky reference material in `references/` and link to it from `SKILL.md`. + +## Skill Template + +```markdown +--- +name: skill-name +description: Use this skill when... +allowed-tools: Read, Write, Edit +--- + +# Skill Name + +Briefly state what this skill enables. + +## Workflow + +1. First step +2. Second step +3. Third step + +## Output + +Describe what the agent should produce or do. +``` + +## Best Practices + +- Keep each skill focused on one reusable capability. +- Prefer concrete workflows over broad advice. +- Store long examples, API references, or playbooks in `references/`. +- Add scripts when repeatable work is safer as executable code. +- Include evals when the skill has a quality bar that can be checked repeatedly. diff --git a/.agents/skills/draft-newsletter/SKILL.md b/.agents/skills/draft-newsletter/SKILL.md new file mode 100644 index 0000000..7f2422d --- /dev/null +++ b/.agents/skills/draft-newsletter/SKILL.md @@ -0,0 +1,165 @@ +--- +name: draft-newsletter +description: Draft the weekly Buttondown newsletter issue. Use this skill whenever Damian wants to write, draft, or prepare the next newsletter, weekly email, or Buttondown issue. Also use when he mentions "newsletter," "this week's email," "Wednesday email," "Buttondown draft," or anything about preparing the weekly send. This skill handles the full workflow — determining whether the issue should lead with a video or blog post, checking open-source repos for updates, gathering curated links, selecting the right CTA, and writing the draft. +--- + +# Draft Newsletter + +Guide Damian through drafting the weekly Buttondown newsletter issue. The newsletter publishes on Wednesdays and alternates between video-led and blog-post-led weeks. + +This is an interactive, multi-step process. You are a collaborator, not an autonomous writer. Gather inputs, surface relevant material, and then draft. + +## Before Starting + +Read these files to load context: + +1. `~/vault/2-Areas/Content Creation/Creator Voice and Positioning.md` — compact creator voice and positioning (required, read every time) +2. `~/vault/2-Areas/Content Creation/Newsletter/References/Voice Profile.md` — newsletter-specific writing voice +3. `~/vault/2-Areas/Content Creation/Newsletter/References/Newsletter Charter.md` — newsletter charter, structure, template +4. `~/vault/2-Areas/Content Creation/Newsletter/References/Content Cadence.md` — the alternating video/blog rhythm +5. `~/vault/2-Areas/Content Creation/Newsletter/References/Lead Generation.md` — available lead magnets and funnels + +Also read the two most recent newsletters in `~/vault/2-Areas/Content Creation/Newsletter/Published/` (sort by filename or `publish_date` in frontmatter) to calibrate tone and see what was covered last. Check `~/vault/2-Areas/Content Creation/Newsletter/Backlog.md` for curated links, quick hits, and issue candidates. + +## Current Source of Truth + +- Newsletter drafts, published issues, backlog, and newsletter-specific references live in `~/vault/2-Areas/Content Creation/Newsletter/`. +- Current YouTube video packages, titles, publish state, descriptions, resources, CTAs, and related child pages live in the Notion `YouTube Production OS` Videos database. Do not use the Obsidian YouTube pipeline as the source of truth for current video context. +- Blog posts, site pages, and publish-ready blog metadata live in the `dgalarza.github.io` repo. On Damian's machine this is usually `~/Code/dgalarza.github.io`; in Emma's runtime use `~/Code/emmav2/workspace/repos/dgalarza.github.io`. +- Vault notes can provide supporting context, prior thinking, and newsletter archive history, but the current video package comes from Notion and the current blog package comes from the website repo. + +## Step 1: Determine the Lead Type + +Check the most recent newsletter in `~/vault/2-Areas/Content Creation/Newsletter/Published/`. If it led with a YouTube video, this week should lead with a blog post (and vice versa). The alternating pattern from `~/vault/2-Areas/Content Creation/Newsletter/References/Content Cadence.md`: + +| Week | Newsletter Lead | Notes | +|------|----------------|-------| +| 1 | YouTube video | Video is the headline, no blog post that week | +| 2 | Blog post | Video still publishes, gets a mention but isn't the headline | + +Look at the structure of the last issue — did it open with a `## This week's video` section as the primary content, or did a blog post take the lead? Then alternate. + +Tell Damian what you've determined: "Based on the last issue, this week should be **[video-led / blog-post-led]**." + +Then collect the current lead material from the right source: + +- **If video-led**: Search or fetch the relevant Notion `YouTube Production OS` Videos database record. Use its title, YouTube URL, description/package notes, resources, CTA, and linked child pages when available. If multiple records match or Notion access is unavailable, ask Damian for the exact Notion page or YouTube URL instead of falling back to the Obsidian YouTube pipeline. +- **If blog-post-led**: Locate the leading blog post in the `dgalarza.github.io` repo (`content/posts/`) or ask Damian for the URL/filename if it is not clear. The video still gets a mention, so fetch the current video from the Notion Videos database or ask for the exact Notion page/YouTube URL. + +Confirm the lead type and the source records before drafting. If Notion and the repo disagree, treat Notion as authoritative for video details and the repo as authoritative for blog details, then surface the mismatch. + +## Step 2: Check Open-Source Repos for Updates + +Review recent git activity in both repos to surface anything worth mentioning: + +```bash +# Check claude-code-workflows for recent activity +cd ~/Code/claude-code-workflows +git log --oneline --since="7 days ago" +git tag --sort=-creatordate | head -5 + +# Check agent-skills for recent activity +cd ~/Code/agent-skills +git log --oneline --since="7 days ago" +git tag --sort=-creatordate | head -5 +``` + +If there are noteworthy changes (new releases, new plugins/skills, significant updates), summarize them for Damian. These can go in an "Open Source Updates" section or under "Quick Hits." + +If nothing significant happened in the last week, that's fine — skip this section in the newsletter. Don't manufacture updates. + +## Step 3: Ask About Curated Links + +Use `AskUserQuestion` to ask Damian: + +> Do you have any interesting links to share this week? These could be from X/Twitter, Hacker News, blog posts, tool releases, or anything relevant to the audience. Each one gets 2-4 sentences of your take on why it matters. +> +> If you have links, share them and I'll help write the context. If not, we can skip this section. + +If Damian provides links, write 2-4 sentences of context for each one following the newsletter voice. These go in the "Curated Links & Tools" section. The context should explain why the link matters to the audience (developers using AI coding tools), not just describe what it is. + +## Step 4: Ask About Livestream + +Use `AskUserQuestion` to ask: + +> Are you doing a livestream this week? If so, what's the date/time, what will you be building, and do you have the stream link? + +If yes, include a "Live Stream" section. If no, skip it. + +## Step 5: Select the CTA + +Every issue needs a call to action. Pick one based on the week's content theme: + +| Lead Magnet | Best When... | URL Segment | +|-------------|-------------|-------------| +| Codebase Readiness Assessment | Content touches codebase quality, agent workflows, team adoption | `codebase-readiness` | +| Terminal Cheat Sheet | Content is beginner-friendly or about terminal/CLI | `terminal-cheat-sheet` | +| Coaching/Services | Content shows consulting-level thinking, architecture decisions | Link to `/coaching/` or `/services/` | + +The coaching/services soft CTA should **always** appear as the closing line regardless of whether another lead magnet is featured. It's a gentle sign-off, not a hard sell. + +If featuring a lead magnet, weave it naturally into the relevant section (not as a separate "ad" block). Use recognizable URL segments so Buttondown automations can tag subscribers who click. + +Present the CTA choice to Damian and confirm before drafting. + +## Step 6: Draft the Newsletter + +Write the draft following this structure. Not every section appears every week — only include what's relevant. + +### Structure + +1. **Lead section** — Video or blog post (whichever is the headline this week) +2. **Secondary mention** — The other one (video gets a brief mention in blog-post-led weeks, and vice versa) +3. **Livestream announcement** — Only if applicable +4. **Original commentary** — 1-2 sections of exclusive value: behind the scenes, what you're building, open source updates, deeper context +5. **Curated Links & Tools** — 1-3 items with context (only if Damian provided links) +6. **Quick Hits** — Optional 1-3 bullet items for small announcements +7. **Closing CTA** — Reply prompt + soft coaching/services link + "Damian" + +### Formatting Rules + +- Use `---` horizontal rules between major sections +- YouTube thumbnails use: `[![TITLE](https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg)](https://youtu.be/VIDEO_ID)` +- Blog post links should use the full damiangalarza.com URL +- Keep to 500-1000 words total +- Sign off as "Damian" (just the name, no "Best," or "Cheers,") + +### Frontmatter + +```yaml +--- +subject: "" +description: "" +status: draft +--- +``` + +The **subject line** should be specific and concrete — what the reader will learn or see. Not clickbait, not vague. Look at past issues for calibration. + +The **description** is the email preview text (the snippet readers see in their inbox before opening). Keep it to 1-2 sentences that tease the key topics covered in the issue. Look at the `description` field in recent newsletters for examples. + +### Voice Reminders + +- First person ("I built", "I found", "I've been using") +- Direct and concise — no filler +- Professional but conversational +- No hype, no fluff, no excessive enthusiasm +- Honest about what didn't work +- No em dashes — use commas, parentheses, or separate sentences + +### Save Location + +Save the draft to `~/vault/2-Areas/Content Creation/Newsletter/Drafts/.md` where the slug is derived from the subject line (lowercase, hyphens, no special characters). + +Use the Buttondown API skill to create or update the Buttondown draft after Damian approves the local draft. After the issue is sent, update Buttondown metadata in the vault file and move it to `~/vault/2-Areas/Content Creation/Newsletter/Published/YYYY/`. + +## Step 7: Review with Damian + +After writing the draft, ask Damian to review it. Call out: + +- The lead type and why +- Which CTA you chose and why +- Any sections you skipped and why +- Anything you weren't sure about + +Be ready to revise based on feedback. The goal is a draft Damian can publish with minimal edits, not a perfect first pass. diff --git a/.claude/skills/email-sequence/SKILL.md b/.agents/skills/email-sequence/SKILL.md similarity index 100% rename from .claude/skills/email-sequence/SKILL.md rename to .agents/skills/email-sequence/SKILL.md diff --git a/.claude/skills/email-sequence/evals/evals.json b/.agents/skills/email-sequence/evals/evals.json similarity index 100% rename from .claude/skills/email-sequence/evals/evals.json rename to .agents/skills/email-sequence/evals/evals.json diff --git a/.claude/skills/email-sequence/references/copy-guidelines.md b/.agents/skills/email-sequence/references/copy-guidelines.md similarity index 100% rename from .claude/skills/email-sequence/references/copy-guidelines.md rename to .agents/skills/email-sequence/references/copy-guidelines.md diff --git a/.claude/skills/email-sequence/references/email-types.md b/.agents/skills/email-sequence/references/email-types.md similarity index 100% rename from .claude/skills/email-sequence/references/email-types.md rename to .agents/skills/email-sequence/references/email-types.md diff --git a/.claude/skills/email-sequence/references/sequence-templates.md b/.agents/skills/email-sequence/references/sequence-templates.md similarity index 100% rename from .claude/skills/email-sequence/references/sequence-templates.md rename to .agents/skills/email-sequence/references/sequence-templates.md diff --git a/.claude/skills/form-cro/SKILL.md b/.agents/skills/form-cro/SKILL.md similarity index 100% rename from .claude/skills/form-cro/SKILL.md rename to .agents/skills/form-cro/SKILL.md diff --git a/.claude/skills/form-cro/evals/evals.json b/.agents/skills/form-cro/evals/evals.json similarity index 100% rename from .claude/skills/form-cro/evals/evals.json rename to .agents/skills/form-cro/evals/evals.json diff --git a/.claude/skills/free-tool-strategy/SKILL.md b/.agents/skills/free-tool-strategy/SKILL.md similarity index 100% rename from .claude/skills/free-tool-strategy/SKILL.md rename to .agents/skills/free-tool-strategy/SKILL.md diff --git a/.claude/skills/free-tool-strategy/evals/evals.json b/.agents/skills/free-tool-strategy/evals/evals.json similarity index 100% rename from .claude/skills/free-tool-strategy/evals/evals.json rename to .agents/skills/free-tool-strategy/evals/evals.json diff --git a/.claude/skills/free-tool-strategy/references/tool-types.md b/.agents/skills/free-tool-strategy/references/tool-types.md similarity index 100% rename from .claude/skills/free-tool-strategy/references/tool-types.md rename to .agents/skills/free-tool-strategy/references/tool-types.md diff --git a/.claude/skills/last30days/README.md b/.agents/skills/last30days/README.md similarity index 99% rename from .claude/skills/last30days/README.md rename to .agents/skills/last30days/README.md index 4b9fb6d..f05846a 100644 --- a/.claude/skills/last30days/README.md +++ b/.agents/skills/last30days/README.md @@ -10,7 +10,7 @@ ```bash # Clone the repo -git clone https://github.com/mvanhorn/last30days-skill.git ~/.claude/skills/last30days +git clone https://github.com/mvanhorn/last30days-skill.git ~/.agents/skills/last30days # Add your API keys mkdir -p ~/.config/last30days diff --git a/.claude/skills/last30days/SKILL.md b/.agents/skills/last30days/SKILL.md similarity index 99% rename from .claude/skills/last30days/SKILL.md rename to .agents/skills/last30days/SKILL.md index 5e4642d..8e1bf0c 100644 --- a/.claude/skills/last30days/SKILL.md +++ b/.agents/skills/last30days/SKILL.md @@ -90,7 +90,7 @@ echo "Edit to add your API keys for enhanced research." **Step 1: Run the research script** ```bash -python3 ~/.claude/skills/last30days/scripts/last30days.py "$ARGUMENTS" --emit=compact 2>&1 +python3 ~/.agents/skills/last30days/scripts/last30days.py "$ARGUMENTS" --emit=compact 2>&1 ``` The script will automatically: diff --git a/.claude/skills/last30days/SPEC.md b/.agents/skills/last30days/SPEC.md similarity index 91% rename from .claude/skills/last30days/SPEC.md rename to .agents/skills/last30days/SPEC.md index a464c0b..27e5cc7 100644 --- a/.claude/skills/last30days/SPEC.md +++ b/.agents/skills/last30days/SPEC.md @@ -31,7 +31,7 @@ Other skills can import the research context in several ways: ### Inline Context Injection ```markdown ## Recent Research Context -!python3 ~/.claude/skills/last30days/scripts/last30days.py "your topic" --emit=context +!python3 ~/.agents/skills/last30days/scripts/last30days.py "your topic" --emit=context ``` ### Read from File @@ -42,19 +42,19 @@ Other skills can import the research context in several ways: ### Get Path for Dynamic Loading ```bash -CONTEXT_PATH=$(python3 ~/.claude/skills/last30days/scripts/last30days.py "topic" --emit=path) +CONTEXT_PATH=$(python3 ~/.agents/skills/last30days/scripts/last30days.py "topic" --emit=path) cat "$CONTEXT_PATH" ``` ### JSON for Programmatic Use ```bash -python3 ~/.claude/skills/last30days/scripts/last30days.py "topic" --emit=json > research.json +python3 ~/.agents/skills/last30days/scripts/last30days.py "topic" --emit=json > research.json ``` ## CLI Reference ``` -python3 ~/.claude/skills/last30days/scripts/last30days.py [options] +python3 ~/.agents/skills/last30days/scripts/last30days.py [options] Options: --refresh Bypass cache and fetch fresh data diff --git a/.claude/skills/last30days/TASKS.md b/.agents/skills/last30days/TASKS.md similarity index 100% rename from .claude/skills/last30days/TASKS.md rename to .agents/skills/last30days/TASKS.md diff --git a/.claude/skills/last30days/assets/aging-portrait.jpeg b/.agents/skills/last30days/assets/aging-portrait.jpeg similarity index 100% rename from .claude/skills/last30days/assets/aging-portrait.jpeg rename to .agents/skills/last30days/assets/aging-portrait.jpeg diff --git a/.claude/skills/last30days/assets/claude-code-rap.mp3 b/.agents/skills/last30days/assets/claude-code-rap.mp3 similarity index 100% rename from .claude/skills/last30days/assets/claude-code-rap.mp3 rename to .agents/skills/last30days/assets/claude-code-rap.mp3 diff --git a/.claude/skills/last30days/assets/dog-as-human.png b/.agents/skills/last30days/assets/dog-as-human.png similarity index 100% rename from .claude/skills/last30days/assets/dog-as-human.png rename to .agents/skills/last30days/assets/dog-as-human.png diff --git a/.claude/skills/last30days/assets/dog-original.jpeg b/.agents/skills/last30days/assets/dog-original.jpeg similarity index 100% rename from .claude/skills/last30days/assets/dog-original.jpeg rename to .agents/skills/last30days/assets/dog-original.jpeg diff --git a/.claude/skills/last30days/assets/swimmom-mockup.jpeg b/.agents/skills/last30days/assets/swimmom-mockup.jpeg similarity index 100% rename from .claude/skills/last30days/assets/swimmom-mockup.jpeg rename to .agents/skills/last30days/assets/swimmom-mockup.jpeg diff --git a/.claude/skills/last30days/fixtures/models_openai_sample.json b/.agents/skills/last30days/fixtures/models_openai_sample.json similarity index 100% rename from .claude/skills/last30days/fixtures/models_openai_sample.json rename to .agents/skills/last30days/fixtures/models_openai_sample.json diff --git a/.claude/skills/last30days/fixtures/models_xai_sample.json b/.agents/skills/last30days/fixtures/models_xai_sample.json similarity index 100% rename from .claude/skills/last30days/fixtures/models_xai_sample.json rename to .agents/skills/last30days/fixtures/models_xai_sample.json diff --git a/.claude/skills/last30days/fixtures/openai_sample.json b/.agents/skills/last30days/fixtures/openai_sample.json similarity index 100% rename from .claude/skills/last30days/fixtures/openai_sample.json rename to .agents/skills/last30days/fixtures/openai_sample.json diff --git a/.claude/skills/last30days/fixtures/reddit_thread_sample.json b/.agents/skills/last30days/fixtures/reddit_thread_sample.json similarity index 100% rename from .claude/skills/last30days/fixtures/reddit_thread_sample.json rename to .agents/skills/last30days/fixtures/reddit_thread_sample.json diff --git a/.claude/skills/last30days/fixtures/xai_sample.json b/.agents/skills/last30days/fixtures/xai_sample.json similarity index 100% rename from .claude/skills/last30days/fixtures/xai_sample.json rename to .agents/skills/last30days/fixtures/xai_sample.json diff --git a/.claude/skills/last30days/plans/feat-add-websearch-source.md b/.agents/skills/last30days/plans/feat-add-websearch-source.md similarity index 100% rename from .claude/skills/last30days/plans/feat-add-websearch-source.md rename to .agents/skills/last30days/plans/feat-add-websearch-source.md diff --git a/.claude/skills/last30days/plans/fix-strict-date-filtering.md b/.agents/skills/last30days/plans/fix-strict-date-filtering.md similarity index 100% rename from .claude/skills/last30days/plans/fix-strict-date-filtering.md rename to .agents/skills/last30days/plans/fix-strict-date-filtering.md diff --git a/.claude/skills/last30days/scripts/last30days.py b/.agents/skills/last30days/scripts/last30days.py similarity index 100% rename from .claude/skills/last30days/scripts/last30days.py rename to .agents/skills/last30days/scripts/last30days.py diff --git a/.claude/skills/last30days/scripts/lib/__init__.py b/.agents/skills/last30days/scripts/lib/__init__.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/__init__.py rename to .agents/skills/last30days/scripts/lib/__init__.py diff --git a/.claude/skills/last30days/scripts/lib/cache.py b/.agents/skills/last30days/scripts/lib/cache.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/cache.py rename to .agents/skills/last30days/scripts/lib/cache.py diff --git a/.claude/skills/last30days/scripts/lib/dates.py b/.agents/skills/last30days/scripts/lib/dates.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/dates.py rename to .agents/skills/last30days/scripts/lib/dates.py diff --git a/.claude/skills/last30days/scripts/lib/dedupe.py b/.agents/skills/last30days/scripts/lib/dedupe.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/dedupe.py rename to .agents/skills/last30days/scripts/lib/dedupe.py diff --git a/.claude/skills/last30days/scripts/lib/env.py b/.agents/skills/last30days/scripts/lib/env.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/env.py rename to .agents/skills/last30days/scripts/lib/env.py diff --git a/.claude/skills/last30days/scripts/lib/http.py b/.agents/skills/last30days/scripts/lib/http.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/http.py rename to .agents/skills/last30days/scripts/lib/http.py diff --git a/.claude/skills/last30days/scripts/lib/models.py b/.agents/skills/last30days/scripts/lib/models.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/models.py rename to .agents/skills/last30days/scripts/lib/models.py diff --git a/.claude/skills/last30days/scripts/lib/normalize.py b/.agents/skills/last30days/scripts/lib/normalize.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/normalize.py rename to .agents/skills/last30days/scripts/lib/normalize.py diff --git a/.claude/skills/last30days/scripts/lib/openai_reddit.py b/.agents/skills/last30days/scripts/lib/openai_reddit.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/openai_reddit.py rename to .agents/skills/last30days/scripts/lib/openai_reddit.py diff --git a/.claude/skills/last30days/scripts/lib/reddit_enrich.py b/.agents/skills/last30days/scripts/lib/reddit_enrich.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/reddit_enrich.py rename to .agents/skills/last30days/scripts/lib/reddit_enrich.py diff --git a/.claude/skills/last30days/scripts/lib/render.py b/.agents/skills/last30days/scripts/lib/render.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/render.py rename to .agents/skills/last30days/scripts/lib/render.py diff --git a/.claude/skills/last30days/scripts/lib/schema.py b/.agents/skills/last30days/scripts/lib/schema.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/schema.py rename to .agents/skills/last30days/scripts/lib/schema.py diff --git a/.claude/skills/last30days/scripts/lib/score.py b/.agents/skills/last30days/scripts/lib/score.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/score.py rename to .agents/skills/last30days/scripts/lib/score.py diff --git a/.claude/skills/last30days/scripts/lib/ui.py b/.agents/skills/last30days/scripts/lib/ui.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/ui.py rename to .agents/skills/last30days/scripts/lib/ui.py diff --git a/.claude/skills/last30days/scripts/lib/websearch.py b/.agents/skills/last30days/scripts/lib/websearch.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/websearch.py rename to .agents/skills/last30days/scripts/lib/websearch.py diff --git a/.claude/skills/last30days/scripts/lib/xai_x.py b/.agents/skills/last30days/scripts/lib/xai_x.py similarity index 100% rename from .claude/skills/last30days/scripts/lib/xai_x.py rename to .agents/skills/last30days/scripts/lib/xai_x.py diff --git a/.claude/skills/last30days/tests/__init__.py b/.agents/skills/last30days/tests/__init__.py similarity index 100% rename from .claude/skills/last30days/tests/__init__.py rename to .agents/skills/last30days/tests/__init__.py diff --git a/.claude/skills/last30days/tests/test_cache.py b/.agents/skills/last30days/tests/test_cache.py similarity index 100% rename from .claude/skills/last30days/tests/test_cache.py rename to .agents/skills/last30days/tests/test_cache.py diff --git a/.claude/skills/last30days/tests/test_dates.py b/.agents/skills/last30days/tests/test_dates.py similarity index 100% rename from .claude/skills/last30days/tests/test_dates.py rename to .agents/skills/last30days/tests/test_dates.py diff --git a/.claude/skills/last30days/tests/test_dedupe.py b/.agents/skills/last30days/tests/test_dedupe.py similarity index 100% rename from .claude/skills/last30days/tests/test_dedupe.py rename to .agents/skills/last30days/tests/test_dedupe.py diff --git a/.claude/skills/last30days/tests/test_models.py b/.agents/skills/last30days/tests/test_models.py similarity index 100% rename from .claude/skills/last30days/tests/test_models.py rename to .agents/skills/last30days/tests/test_models.py diff --git a/.claude/skills/last30days/tests/test_normalize.py b/.agents/skills/last30days/tests/test_normalize.py similarity index 100% rename from .claude/skills/last30days/tests/test_normalize.py rename to .agents/skills/last30days/tests/test_normalize.py diff --git a/.claude/skills/last30days/tests/test_render.py b/.agents/skills/last30days/tests/test_render.py similarity index 100% rename from .claude/skills/last30days/tests/test_render.py rename to .agents/skills/last30days/tests/test_render.py diff --git a/.claude/skills/last30days/tests/test_score.py b/.agents/skills/last30days/tests/test_score.py similarity index 100% rename from .claude/skills/last30days/tests/test_score.py rename to .agents/skills/last30days/tests/test_score.py diff --git a/.claude/skills/launch-strategy/SKILL.md b/.agents/skills/launch-strategy/SKILL.md similarity index 100% rename from .claude/skills/launch-strategy/SKILL.md rename to .agents/skills/launch-strategy/SKILL.md diff --git a/.claude/skills/launch-strategy/evals/evals.json b/.agents/skills/launch-strategy/evals/evals.json similarity index 100% rename from .claude/skills/launch-strategy/evals/evals.json rename to .agents/skills/launch-strategy/evals/evals.json diff --git a/.claude/skills/lead-magnets/SKILL.md b/.agents/skills/lead-magnets/SKILL.md similarity index 100% rename from .claude/skills/lead-magnets/SKILL.md rename to .agents/skills/lead-magnets/SKILL.md diff --git a/.claude/skills/lead-magnets/references/benchmarks.md b/.agents/skills/lead-magnets/references/benchmarks.md similarity index 100% rename from .claude/skills/lead-magnets/references/benchmarks.md rename to .agents/skills/lead-magnets/references/benchmarks.md diff --git a/.claude/skills/lead-magnets/references/format-guide.md b/.agents/skills/lead-magnets/references/format-guide.md similarity index 100% rename from .claude/skills/lead-magnets/references/format-guide.md rename to .agents/skills/lead-magnets/references/format-guide.md diff --git a/.claude/skills/linear-implement/SKILL.md b/.agents/skills/linear-implement/SKILL.md similarity index 100% rename from .claude/skills/linear-implement/SKILL.md rename to .agents/skills/linear-implement/SKILL.md diff --git a/.claude/skills/marketing-ideas/SKILL.md b/.agents/skills/marketing-ideas/SKILL.md similarity index 100% rename from .claude/skills/marketing-ideas/SKILL.md rename to .agents/skills/marketing-ideas/SKILL.md diff --git a/.claude/skills/marketing-ideas/evals/evals.json b/.agents/skills/marketing-ideas/evals/evals.json similarity index 100% rename from .claude/skills/marketing-ideas/evals/evals.json rename to .agents/skills/marketing-ideas/evals/evals.json diff --git a/.claude/skills/marketing-ideas/references/ideas-by-category.md b/.agents/skills/marketing-ideas/references/ideas-by-category.md similarity index 100% rename from .claude/skills/marketing-ideas/references/ideas-by-category.md rename to .agents/skills/marketing-ideas/references/ideas-by-category.md diff --git a/.claude/skills/marketing-psychology/SKILL.md b/.agents/skills/marketing-psychology/SKILL.md similarity index 100% rename from .claude/skills/marketing-psychology/SKILL.md rename to .agents/skills/marketing-psychology/SKILL.md diff --git a/.claude/skills/marketing-psychology/evals/evals.json b/.agents/skills/marketing-psychology/evals/evals.json similarity index 100% rename from .claude/skills/marketing-psychology/evals/evals.json rename to .agents/skills/marketing-psychology/evals/evals.json diff --git a/.claude/skills/obsidian-vault-manager/SKILL.md b/.agents/skills/obsidian-vault-manager/SKILL.md similarity index 100% rename from .claude/skills/obsidian-vault-manager/SKILL.md rename to .agents/skills/obsidian-vault-manager/SKILL.md diff --git a/.claude/skills/og-image/SKILL.md b/.agents/skills/og-image/SKILL.md similarity index 100% rename from .claude/skills/og-image/SKILL.md rename to .agents/skills/og-image/SKILL.md diff --git a/.claude/skills/onboarding-cro/SKILL.md b/.agents/skills/onboarding-cro/SKILL.md similarity index 100% rename from .claude/skills/onboarding-cro/SKILL.md rename to .agents/skills/onboarding-cro/SKILL.md diff --git a/.claude/skills/onboarding-cro/evals/evals.json b/.agents/skills/onboarding-cro/evals/evals.json similarity index 100% rename from .claude/skills/onboarding-cro/evals/evals.json rename to .agents/skills/onboarding-cro/evals/evals.json diff --git a/.claude/skills/onboarding-cro/references/experiments.md b/.agents/skills/onboarding-cro/references/experiments.md similarity index 100% rename from .claude/skills/onboarding-cro/references/experiments.md rename to .agents/skills/onboarding-cro/references/experiments.md diff --git a/.claude/skills/page-cro/SKILL.md b/.agents/skills/page-cro/SKILL.md similarity index 100% rename from .claude/skills/page-cro/SKILL.md rename to .agents/skills/page-cro/SKILL.md diff --git a/.claude/skills/page-cro/evals/evals.json b/.agents/skills/page-cro/evals/evals.json similarity index 100% rename from .claude/skills/page-cro/evals/evals.json rename to .agents/skills/page-cro/evals/evals.json diff --git a/.claude/skills/page-cro/references/experiments.md b/.agents/skills/page-cro/references/experiments.md similarity index 100% rename from .claude/skills/page-cro/references/experiments.md rename to .agents/skills/page-cro/references/experiments.md diff --git a/.claude/skills/paid-ads/SKILL.md b/.agents/skills/paid-ads/SKILL.md similarity index 100% rename from .claude/skills/paid-ads/SKILL.md rename to .agents/skills/paid-ads/SKILL.md diff --git a/.claude/skills/paid-ads/evals/evals.json b/.agents/skills/paid-ads/evals/evals.json similarity index 100% rename from .claude/skills/paid-ads/evals/evals.json rename to .agents/skills/paid-ads/evals/evals.json diff --git a/.claude/skills/paid-ads/references/ad-copy-templates.md b/.agents/skills/paid-ads/references/ad-copy-templates.md similarity index 100% rename from .claude/skills/paid-ads/references/ad-copy-templates.md rename to .agents/skills/paid-ads/references/ad-copy-templates.md diff --git a/.claude/skills/paid-ads/references/audience-targeting.md b/.agents/skills/paid-ads/references/audience-targeting.md similarity index 100% rename from .claude/skills/paid-ads/references/audience-targeting.md rename to .agents/skills/paid-ads/references/audience-targeting.md diff --git a/.claude/skills/paid-ads/references/platform-setup-checklists.md b/.agents/skills/paid-ads/references/platform-setup-checklists.md similarity index 100% rename from .claude/skills/paid-ads/references/platform-setup-checklists.md rename to .agents/skills/paid-ads/references/platform-setup-checklists.md diff --git a/.claude/skills/paywall-upgrade-cro/SKILL.md b/.agents/skills/paywall-upgrade-cro/SKILL.md similarity index 100% rename from .claude/skills/paywall-upgrade-cro/SKILL.md rename to .agents/skills/paywall-upgrade-cro/SKILL.md diff --git a/.claude/skills/paywall-upgrade-cro/evals/evals.json b/.agents/skills/paywall-upgrade-cro/evals/evals.json similarity index 100% rename from .claude/skills/paywall-upgrade-cro/evals/evals.json rename to .agents/skills/paywall-upgrade-cro/evals/evals.json diff --git a/.claude/skills/paywall-upgrade-cro/references/experiments.md b/.agents/skills/paywall-upgrade-cro/references/experiments.md similarity index 100% rename from .claude/skills/paywall-upgrade-cro/references/experiments.md rename to .agents/skills/paywall-upgrade-cro/references/experiments.md diff --git a/.claude/skills/popup-cro/SKILL.md b/.agents/skills/popup-cro/SKILL.md similarity index 100% rename from .claude/skills/popup-cro/SKILL.md rename to .agents/skills/popup-cro/SKILL.md diff --git a/.claude/skills/popup-cro/evals/evals.json b/.agents/skills/popup-cro/evals/evals.json similarity index 100% rename from .claude/skills/popup-cro/evals/evals.json rename to .agents/skills/popup-cro/evals/evals.json diff --git a/.claude/skills/pricing-strategy/SKILL.md b/.agents/skills/pricing-strategy/SKILL.md similarity index 100% rename from .claude/skills/pricing-strategy/SKILL.md rename to .agents/skills/pricing-strategy/SKILL.md diff --git a/.claude/skills/pricing-strategy/evals/evals.json b/.agents/skills/pricing-strategy/evals/evals.json similarity index 100% rename from .claude/skills/pricing-strategy/evals/evals.json rename to .agents/skills/pricing-strategy/evals/evals.json diff --git a/.claude/skills/pricing-strategy/references/research-methods.md b/.agents/skills/pricing-strategy/references/research-methods.md similarity index 100% rename from .claude/skills/pricing-strategy/references/research-methods.md rename to .agents/skills/pricing-strategy/references/research-methods.md diff --git a/.claude/skills/pricing-strategy/references/tier-structure.md b/.agents/skills/pricing-strategy/references/tier-structure.md similarity index 100% rename from .claude/skills/pricing-strategy/references/tier-structure.md rename to .agents/skills/pricing-strategy/references/tier-structure.md diff --git a/.claude/skills/product-marketing-context/SKILL.md b/.agents/skills/product-marketing-context/SKILL.md similarity index 100% rename from .claude/skills/product-marketing-context/SKILL.md rename to .agents/skills/product-marketing-context/SKILL.md diff --git a/.claude/skills/product-marketing-context/evals/evals.json b/.agents/skills/product-marketing-context/evals/evals.json similarity index 100% rename from .claude/skills/product-marketing-context/evals/evals.json rename to .agents/skills/product-marketing-context/evals/evals.json diff --git a/.claude/skills/programmatic-seo/SKILL.md b/.agents/skills/programmatic-seo/SKILL.md similarity index 100% rename from .claude/skills/programmatic-seo/SKILL.md rename to .agents/skills/programmatic-seo/SKILL.md diff --git a/.claude/skills/programmatic-seo/evals/evals.json b/.agents/skills/programmatic-seo/evals/evals.json similarity index 100% rename from .claude/skills/programmatic-seo/evals/evals.json rename to .agents/skills/programmatic-seo/evals/evals.json diff --git a/.claude/skills/programmatic-seo/references/playbooks.md b/.agents/skills/programmatic-seo/references/playbooks.md similarity index 100% rename from .claude/skills/programmatic-seo/references/playbooks.md rename to .agents/skills/programmatic-seo/references/playbooks.md diff --git a/.claude/skills/referral-program/SKILL.md b/.agents/skills/referral-program/SKILL.md similarity index 100% rename from .claude/skills/referral-program/SKILL.md rename to .agents/skills/referral-program/SKILL.md diff --git a/.claude/skills/referral-program/evals/evals.json b/.agents/skills/referral-program/evals/evals.json similarity index 100% rename from .claude/skills/referral-program/evals/evals.json rename to .agents/skills/referral-program/evals/evals.json diff --git a/.claude/skills/referral-program/references/affiliate-programs.md b/.agents/skills/referral-program/references/affiliate-programs.md similarity index 100% rename from .claude/skills/referral-program/references/affiliate-programs.md rename to .agents/skills/referral-program/references/affiliate-programs.md diff --git a/.claude/skills/referral-program/references/program-examples.md b/.agents/skills/referral-program/references/program-examples.md similarity index 100% rename from .claude/skills/referral-program/references/program-examples.md rename to .agents/skills/referral-program/references/program-examples.md diff --git a/.claude/skills/revops/SKILL.md b/.agents/skills/revops/SKILL.md similarity index 100% rename from .claude/skills/revops/SKILL.md rename to .agents/skills/revops/SKILL.md diff --git a/.claude/skills/revops/evals/evals.json b/.agents/skills/revops/evals/evals.json similarity index 100% rename from .claude/skills/revops/evals/evals.json rename to .agents/skills/revops/evals/evals.json diff --git a/.claude/skills/revops/references/automation-playbooks.md b/.agents/skills/revops/references/automation-playbooks.md similarity index 100% rename from .claude/skills/revops/references/automation-playbooks.md rename to .agents/skills/revops/references/automation-playbooks.md diff --git a/.claude/skills/revops/references/lifecycle-definitions.md b/.agents/skills/revops/references/lifecycle-definitions.md similarity index 100% rename from .claude/skills/revops/references/lifecycle-definitions.md rename to .agents/skills/revops/references/lifecycle-definitions.md diff --git a/.claude/skills/revops/references/routing-rules.md b/.agents/skills/revops/references/routing-rules.md similarity index 100% rename from .claude/skills/revops/references/routing-rules.md rename to .agents/skills/revops/references/routing-rules.md diff --git a/.claude/skills/revops/references/scoring-models.md b/.agents/skills/revops/references/scoring-models.md similarity index 100% rename from .claude/skills/revops/references/scoring-models.md rename to .agents/skills/revops/references/scoring-models.md diff --git a/.claude/skills/sales-enablement/SKILL.md b/.agents/skills/sales-enablement/SKILL.md similarity index 100% rename from .claude/skills/sales-enablement/SKILL.md rename to .agents/skills/sales-enablement/SKILL.md diff --git a/.claude/skills/sales-enablement/evals/evals.json b/.agents/skills/sales-enablement/evals/evals.json similarity index 100% rename from .claude/skills/sales-enablement/evals/evals.json rename to .agents/skills/sales-enablement/evals/evals.json diff --git a/.claude/skills/sales-enablement/references/deck-frameworks.md b/.agents/skills/sales-enablement/references/deck-frameworks.md similarity index 100% rename from .claude/skills/sales-enablement/references/deck-frameworks.md rename to .agents/skills/sales-enablement/references/deck-frameworks.md diff --git a/.claude/skills/sales-enablement/references/demo-scripts.md b/.agents/skills/sales-enablement/references/demo-scripts.md similarity index 100% rename from .claude/skills/sales-enablement/references/demo-scripts.md rename to .agents/skills/sales-enablement/references/demo-scripts.md diff --git a/.claude/skills/sales-enablement/references/objection-library.md b/.agents/skills/sales-enablement/references/objection-library.md similarity index 100% rename from .claude/skills/sales-enablement/references/objection-library.md rename to .agents/skills/sales-enablement/references/objection-library.md diff --git a/.claude/skills/sales-enablement/references/one-pager-templates.md b/.agents/skills/sales-enablement/references/one-pager-templates.md similarity index 100% rename from .claude/skills/sales-enablement/references/one-pager-templates.md rename to .agents/skills/sales-enablement/references/one-pager-templates.md diff --git a/.claude/skills/schema-markup/SKILL.md b/.agents/skills/schema-markup/SKILL.md similarity index 100% rename from .claude/skills/schema-markup/SKILL.md rename to .agents/skills/schema-markup/SKILL.md diff --git a/.claude/skills/schema-markup/evals/evals.json b/.agents/skills/schema-markup/evals/evals.json similarity index 100% rename from .claude/skills/schema-markup/evals/evals.json rename to .agents/skills/schema-markup/evals/evals.json diff --git a/.claude/skills/schema-markup/references/schema-examples.md b/.agents/skills/schema-markup/references/schema-examples.md similarity index 100% rename from .claude/skills/schema-markup/references/schema-examples.md rename to .agents/skills/schema-markup/references/schema-examples.md diff --git a/.claude/skills/seo-audit/SKILL.md b/.agents/skills/seo-audit/SKILL.md similarity index 100% rename from .claude/skills/seo-audit/SKILL.md rename to .agents/skills/seo-audit/SKILL.md diff --git a/.claude/skills/seo-audit/evals/evals.json b/.agents/skills/seo-audit/evals/evals.json similarity index 100% rename from .claude/skills/seo-audit/evals/evals.json rename to .agents/skills/seo-audit/evals/evals.json diff --git a/.claude/skills/seo-audit/references/ai-writing-detection.md b/.agents/skills/seo-audit/references/ai-writing-detection.md similarity index 100% rename from .claude/skills/seo-audit/references/ai-writing-detection.md rename to .agents/skills/seo-audit/references/ai-writing-detection.md diff --git a/.claude/skills/signup-flow-cro/SKILL.md b/.agents/skills/signup-flow-cro/SKILL.md similarity index 100% rename from .claude/skills/signup-flow-cro/SKILL.md rename to .agents/skills/signup-flow-cro/SKILL.md diff --git a/.claude/skills/signup-flow-cro/evals/evals.json b/.agents/skills/signup-flow-cro/evals/evals.json similarity index 100% rename from .claude/skills/signup-flow-cro/evals/evals.json rename to .agents/skills/signup-flow-cro/evals/evals.json diff --git a/.claude/skills/site-architecture/SKILL.md b/.agents/skills/site-architecture/SKILL.md similarity index 100% rename from .claude/skills/site-architecture/SKILL.md rename to .agents/skills/site-architecture/SKILL.md diff --git a/.claude/skills/site-architecture/evals/evals.json b/.agents/skills/site-architecture/evals/evals.json similarity index 100% rename from .claude/skills/site-architecture/evals/evals.json rename to .agents/skills/site-architecture/evals/evals.json diff --git a/.claude/skills/site-architecture/references/mermaid-templates.md b/.agents/skills/site-architecture/references/mermaid-templates.md similarity index 100% rename from .claude/skills/site-architecture/references/mermaid-templates.md rename to .agents/skills/site-architecture/references/mermaid-templates.md diff --git a/.claude/skills/site-architecture/references/navigation-patterns.md b/.agents/skills/site-architecture/references/navigation-patterns.md similarity index 100% rename from .claude/skills/site-architecture/references/navigation-patterns.md rename to .agents/skills/site-architecture/references/navigation-patterns.md diff --git a/.claude/skills/site-architecture/references/site-type-templates.md b/.agents/skills/site-architecture/references/site-type-templates.md similarity index 100% rename from .claude/skills/site-architecture/references/site-type-templates.md rename to .agents/skills/site-architecture/references/site-type-templates.md diff --git a/.claude/skills/skill-creator/SKILL.md b/.agents/skills/skill-creator/SKILL.md similarity index 100% rename from .claude/skills/skill-creator/SKILL.md rename to .agents/skills/skill-creator/SKILL.md diff --git a/.claude/skills/skill-creator/scripts/init_skill.py b/.agents/skills/skill-creator/scripts/init_skill.py similarity index 100% rename from .claude/skills/skill-creator/scripts/init_skill.py rename to .agents/skills/skill-creator/scripts/init_skill.py diff --git a/.claude/skills/skill-creator/scripts/package_skill.py b/.agents/skills/skill-creator/scripts/package_skill.py similarity index 100% rename from .claude/skills/skill-creator/scripts/package_skill.py rename to .agents/skills/skill-creator/scripts/package_skill.py diff --git a/.claude/skills/skill-creator/scripts/quick_validate.py b/.agents/skills/skill-creator/scripts/quick_validate.py similarity index 100% rename from .claude/skills/skill-creator/scripts/quick_validate.py rename to .agents/skills/skill-creator/scripts/quick_validate.py diff --git a/.claude/skills/social-content/SKILL.md b/.agents/skills/social-content/SKILL.md similarity index 100% rename from .claude/skills/social-content/SKILL.md rename to .agents/skills/social-content/SKILL.md diff --git a/.claude/skills/social-content/evals/evals.json b/.agents/skills/social-content/evals/evals.json similarity index 100% rename from .claude/skills/social-content/evals/evals.json rename to .agents/skills/social-content/evals/evals.json diff --git a/.claude/skills/social-content/references/platforms.md b/.agents/skills/social-content/references/platforms.md similarity index 100% rename from .claude/skills/social-content/references/platforms.md rename to .agents/skills/social-content/references/platforms.md diff --git a/.claude/skills/social-content/references/post-templates.md b/.agents/skills/social-content/references/post-templates.md similarity index 100% rename from .claude/skills/social-content/references/post-templates.md rename to .agents/skills/social-content/references/post-templates.md diff --git a/.claude/skills/social-content/references/reverse-engineering.md b/.agents/skills/social-content/references/reverse-engineering.md similarity index 100% rename from .claude/skills/social-content/references/reverse-engineering.md rename to .agents/skills/social-content/references/reverse-engineering.md diff --git a/.claude/skills/tailwind-plus-migration/SKILL.md b/.agents/skills/tailwind-plus-migration/SKILL.md similarity index 100% rename from .claude/skills/tailwind-plus-migration/SKILL.md rename to .agents/skills/tailwind-plus-migration/SKILL.md diff --git a/.claude/skills/tailwind-plus-migration/assets/lookbook_template.html.erb b/.agents/skills/tailwind-plus-migration/assets/lookbook_template.html.erb similarity index 100% rename from .claude/skills/tailwind-plus-migration/assets/lookbook_template.html.erb rename to .agents/skills/tailwind-plus-migration/assets/lookbook_template.html.erb diff --git a/.claude/skills/tailwind-plus-migration/assets/lookbook_template.rb b/.agents/skills/tailwind-plus-migration/assets/lookbook_template.rb similarity index 100% rename from .claude/skills/tailwind-plus-migration/assets/lookbook_template.rb rename to .agents/skills/tailwind-plus-migration/assets/lookbook_template.rb diff --git a/.claude/skills/tailwind-plus-migration/assets/rspec_template.rb b/.agents/skills/tailwind-plus-migration/assets/rspec_template.rb similarity index 100% rename from .claude/skills/tailwind-plus-migration/assets/rspec_template.rb rename to .agents/skills/tailwind-plus-migration/assets/rspec_template.rb diff --git a/.claude/skills/tailwind-plus-migration/assets/viewcomponent_template.rb b/.agents/skills/tailwind-plus-migration/assets/viewcomponent_template.rb similarity index 100% rename from .claude/skills/tailwind-plus-migration/assets/viewcomponent_template.rb rename to .agents/skills/tailwind-plus-migration/assets/viewcomponent_template.rb diff --git a/.claude/skills/tailwind-plus-migration/references/tailwind-plus-guide.md b/.agents/skills/tailwind-plus-migration/references/tailwind-plus-guide.md similarity index 100% rename from .claude/skills/tailwind-plus-migration/references/tailwind-plus-guide.md rename to .agents/skills/tailwind-plus-migration/references/tailwind-plus-guide.md diff --git a/.claude/commands/create-command.md b/.claude/commands/create-command.md deleted file mode 100644 index f118708..0000000 --- a/.claude/commands/create-command.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -allowed-tools: Write, Read, Bash(ls:*, mkdir:*), Edit -description: Create a new Claude Code slash command -argument-hint: [command details or description] ---- - -# Create New Slash Command - -I'll help you create a new Claude Code slash command. - -## Your Input - -**Command Details:** $ARGUMENTS - -## Process - -1. **Understand Requirements** - - What should the command do? - - What tools does it need? - - What output should it produce? - -2. **Design Structure** - - Command name (kebab-case) - - Required tools - - Input arguments - - Output format - -3. **Create Command File** - - Location: `.claude/commands/[command-name].md` - - Include proper frontmatter - - Clear instructions - - Example usage - -## Command Template - -```markdown ---- -allowed-tools: [List tools needed: Read, Write, Edit, Bash, etc.] -description: [One-line description] -argument-hint: [What user should provide] ---- - -# Command Name - -Brief description of what this command does. - -## Task - -[Clear description of the task] - -## Process - -1. [Step 1] -2. [Step 2] -3. [Step 3] - -## Output - -[Expected output format] - -## Example Usage - -\`\`\` claude run [command-name] [arguments] \`\`\` -``` - -## Best Practices - -- Keep commands focused on one task -- Use clear, descriptive names -- Include example usage -- Document required arguments -- Specify output format -- List needed tools in frontmatter - -Let me help you create your command! diff --git a/.claude/skills/buffer b/.claude/skills/buffer deleted file mode 120000 index 75ed565..0000000 --- a/.claude/skills/buffer +++ /dev/null @@ -1 +0,0 @@ -../../.agents/skills/buffer \ No newline at end of file diff --git a/.claude/skills/buttondown b/.claude/skills/buttondown deleted file mode 120000 index 309b591..0000000 --- a/.claude/skills/buttondown +++ /dev/null @@ -1 +0,0 @@ -../../.agents/skills/buttondown \ No newline at end of file diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf index 033f200..a628099 100644 --- a/.config/tmux/tmux.conf +++ b/.config/tmux/tmux.conf @@ -53,7 +53,7 @@ set -g @resurrect-strategy-nvim 'session' set -g @catppuccin_flavor "mocha" set -g @catppuccin_window_status_style "rounded" -run ~/.tmux/plugins/tmux/catppuccin.tmux +run ~/.config/tmux/plugins/tmux/catppuccin.tmux set -g @catppuccin_window_text ' #{?#{==:#{window_name},#{pane_current_command}},#{b:pane_current_path},#{window_name}}' set -g @catppuccin_window_current_text ' #{?#{==:#{window_name},#{pane_current_command}},#{b:pane_current_path},#{window_name}}' diff --git a/.zshrc b/.zshrc index d55e963..738dd9a 100644 --- a/.zshrc +++ b/.zshrc @@ -124,7 +124,7 @@ fi [[ -f ~/.zshrc.local ]] && source ~/.zshrc.local -. "$HOME/.atuin/bin/env" +[[ -f "$HOME/.atuin/bin/env" ]] && source "$HOME/.atuin/bin/env" # opencode export PATH=$HOME/.opencode/bin:$PATH diff --git a/README.md b/README.md index be58b92..fead52d 100644 --- a/README.md +++ b/README.md @@ -92,9 +92,9 @@ Custom scripts in `.local/bin/`: ## Claude Code -Global [Claude Code](https://docs.anthropic.com/en/docs/claude-code) configuration lives in `.claude/`. This includes a global `CLAUDE.md` with cross-project context, slash commands, and reusable skills (marketing, content strategy, CRO, SEO, and more). +Global [Claude Code](https://docs.anthropic.com/en/docs/claude-code) configuration lives in `.claude/`. Agent skills live in `.agents/skills/` so they can be shared across agents and bootstrapped into `~/.agents/skills/`, then mirrored into `~/.claude/skills/` for Claude Code. -Run the setup script to symlink everything into `~/.claude/`: +Run the setup script to symlink Claude config into `~/.claude/`, public/private agent skills into `~/.agents/skills/`, and compatibility links into `~/.claude/skills/`: ```bash ./setup-claude.sh @@ -107,4 +107,5 @@ The script also sets up a `~/vault` symlink to your Obsidian vault for private s - `.zshrc` at the repo root - Tool configs under `.config/` (Ghostty, Tmux, Neovim, Starship, AeroSpace) - Custom scripts in `.local/bin/` -- `.claude/` for Claude Code global config (skills, commands, CLAUDE.md) +- `.claude/` for Claude Code global config (`CLAUDE.md`, settings) +- `.agents/skills/` for reusable public agent skills diff --git a/setup-claude.sh b/setup-claude.sh index 780472c..305ce2f 100755 --- a/setup-claude.sh +++ b/setup-claude.sh @@ -1,15 +1,18 @@ #!/bin/bash # -# Sets up Claude Code global config by symlinking from dotfiles -# and connecting private skills from the Obsidian vault. +# Sets up Claude Code global config and agent skills by symlinking from +# dotfiles and connecting private skills from the Obsidian vault. # # Usage: ./setup-claude.sh # set -euo pipefail -DOTFILES_CLAUDE="$(cd "$(dirname "$0")" && pwd)/.claude" +DOTFILES_ROOT="$(cd "$(dirname "$0")" && pwd)" +DOTFILES_CLAUDE="$DOTFILES_ROOT/.claude" +DOTFILES_AGENT_SKILLS="$DOTFILES_ROOT/.agents/skills" CLAUDE_HOME="$HOME/.claude" +AGENTS_HOME="$HOME/.agents" # --- Obsidian Vault Symlink --- @@ -35,35 +38,27 @@ fi VAULT="$HOME/vault" -# --- Ensure ~/.claude directories exist --- +# --- Ensure config directories exist --- +mkdir -p "$CLAUDE_HOME" mkdir -p "$CLAUDE_HOME/skills" -mkdir -p "$CLAUDE_HOME/commands" +mkdir -p "$AGENTS_HOME/skills" # --- Symlink CLAUDE.md --- ln -sf "$DOTFILES_CLAUDE/CLAUDE.md" "$CLAUDE_HOME/CLAUDE.md" echo "Linked CLAUDE.md" -# --- Symlink commands --- +# --- Symlink public agent skills from dotfiles --- -for cmd in "$DOTFILES_CLAUDE"/commands/*.md; do - [ -f "$cmd" ] || continue - name=$(basename "$cmd") - ln -sf "$cmd" "$CLAUDE_HOME/commands/$name" - echo "Linked command: $name" -done - -# --- Symlink public skills from dotfiles --- - -for skill_dir in "$DOTFILES_CLAUDE"/skills/*/; do +for skill_dir in "$DOTFILES_AGENT_SKILLS"/*/; do [ -d "$skill_dir" ] || continue name=$(basename "$skill_dir") # Remove existing (file, dir, or broken symlink) before linking - rm -rf "$CLAUDE_HOME/skills/$name" - ln -sfn "$skill_dir" "$CLAUDE_HOME/skills/$name" + rm -rf "$AGENTS_HOME/skills/$name" + ln -sfn "$skill_dir" "$AGENTS_HOME/skills/$name" done -echo "Linked $(ls -d "$DOTFILES_CLAUDE"/skills/*/ 2>/dev/null | wc -l | tr -d ' ') public skills from dotfiles" +echo "Linked $(ls -d "$DOTFILES_AGENT_SKILLS"/*/ 2>/dev/null | wc -l | tr -d ' ') public skills from dotfiles" # --- Symlink private skills from Obsidian vault --- @@ -73,8 +68,8 @@ if [ -d "$VAULT_SKILLS" ]; then for skill_dir in "$VAULT_SKILLS"/*/; do [ -d "$skill_dir" ] || continue name=$(basename "$skill_dir") - rm -rf "$CLAUDE_HOME/skills/$name" - ln -sfn "$skill_dir" "$CLAUDE_HOME/skills/$name" + rm -rf "$AGENTS_HOME/skills/$name" + ln -sfn "$skill_dir" "$AGENTS_HOME/skills/$name" done echo "Linked $(ls -d "$VAULT_SKILLS"/*/ 2>/dev/null | wc -l | tr -d ' ') private skills from vault" else @@ -83,8 +78,18 @@ else echo " until the vault syncs." fi +# --- Mirror installed agent skills into Claude Code --- + +for skill_link in "$AGENTS_HOME"/skills/*; do + [ -e "$skill_link" ] || continue + name=$(basename "$skill_link") + rm -rf "$CLAUDE_HOME/skills/$name" + ln -sfn "$skill_link" "$CLAUDE_HOME/skills/$name" +done +echo "Mirrored $(find "$AGENTS_HOME/skills" -mindepth 1 -maxdepth 1 -type l 2>/dev/null | wc -l | tr -d ' ') skills into ~/.claude/skills" + echo "" -echo "Done. Claude Code global config is ready." +echo "Done. Claude Code global config and agent skills are ready." echo "" echo "Note: settings.local.json is machine-specific and not managed by this script." echo "If you need to add ~/vault as an additionalDirectory for a project,"