Skip to content

Commit c11e1a1

Browse files
Add multi-tool portability, GTM skill, and CI integrations validation
Phase 6: GTM skill — SKILL.md (144 lines), REFERENCE.md (807 lines), EXAMPLES.md (405 lines) covering container auditing, consent mode v2, debugging, and server-side tagging. Phase 7: Multi-tool portability — convert.sh transforms 39 skills into formats for Cursor (.mdc), Aider (CONVENTIONS.md), Windsurf (.windsurfrules), GitHub Copilot (.instructions.md), and Gemini CLI (GEMINI.md with @import). install.sh provides interactive tool detection and deployment. CI validates integrations/ drift and format compliance. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 13b4d57 commit c11e1a1

File tree

301 files changed

+81971
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

301 files changed

+81971
-1
lines changed

.github/workflows/lint.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,124 @@ jobs:
111111
dirs = set(os.path.dirname(s) for s in skill_files)
112112
print(f"All required files present in {len(dirs)} skill directory(ies).")
113113
PYEOF
114+
115+
validate-integrations:
116+
runs-on: ubuntu-latest
117+
steps:
118+
- name: Checkout
119+
uses: actions/checkout@v4
120+
121+
- name: Run convert.sh
122+
run: bash scripts/convert.sh
123+
124+
- name: Drift detection
125+
run: |
126+
if ! git diff --exit-code integrations/; then
127+
echo ""
128+
echo "ERROR: integrations/ is out of sync with skills/."
129+
echo "Run 'bash scripts/convert.sh' and commit the result."
130+
exit 1
131+
fi
132+
133+
- name: Windsurf size check
134+
if: always()
135+
run: |
136+
SIZE=$(wc -c < integrations/windsurf/.windsurfrules)
137+
echo "integrations/windsurf/.windsurfrules: ${SIZE} chars"
138+
if [ "$SIZE" -ge 12000 ]; then
139+
echo "ERROR: .windsurfrules is ${SIZE} chars, exceeds 12,000 char limit."
140+
exit 1
141+
fi
142+
echo "OK: under 12,000 chars"
143+
144+
- name: Cursor frontmatter validation
145+
if: always()
146+
run: |
147+
ERRORS=0
148+
for f in integrations/cursor/*.mdc; do
149+
[ -f "$f" ] || continue
150+
FIRST=$(head -1 "$f")
151+
if [ "$FIRST" != "---" ]; then
152+
echo "ERROR: $f missing opening --- delimiter"
153+
ERRORS=$((ERRORS + 1))
154+
continue
155+
fi
156+
if ! awk '/^---$/{delim++; if(delim==2) exit} delim==1 && /^description:/{found=1} END{exit !found}' "$f"; then
157+
echo "ERROR: $f missing description: field in frontmatter"
158+
ERRORS=$((ERRORS + 1))
159+
fi
160+
done
161+
if [ "$ERRORS" -gt 0 ]; then
162+
echo "Cursor frontmatter validation failed: ${ERRORS} error(s)"
163+
exit 1
164+
fi
165+
echo "OK: all Cursor .mdc files have valid frontmatter"
166+
167+
- name: File count consistency
168+
if: always()
169+
run: |
170+
SKILL_COUNT=$(ls -1 skills/ | grep -v '^shared$' | while read -r d; do [ -f "skills/$d/SKILL.md" ] && echo "$d"; done | wc -l | tr -d ' ')
171+
CURSOR_COUNT=$(ls -1 integrations/cursor/*.mdc 2>/dev/null | wc -l | tr -d ' ')
172+
COPILOT_COUNT=$(ls -1 integrations/copilot/*.instructions.md 2>/dev/null | wc -l | tr -d ' ')
173+
GEMINI_COUNT=$(ls -1 integrations/gemini/reference/*.md 2>/dev/null | wc -l | tr -d ' ')
174+
echo "Skills with SKILL.md: ${SKILL_COUNT}"
175+
echo "Cursor .mdc files: ${CURSOR_COUNT}"
176+
echo "Copilot .instructions.md files: ${COPILOT_COUNT}"
177+
echo "Gemini reference .md files: ${GEMINI_COUNT}"
178+
ERRORS=0
179+
if [ "$CURSOR_COUNT" -ne "$SKILL_COUNT" ]; then
180+
echo "ERROR: Cursor file count (${CURSOR_COUNT}) does not match skill count (${SKILL_COUNT})"
181+
ERRORS=$((ERRORS + 1))
182+
fi
183+
if [ "$COPILOT_COUNT" -ne "$SKILL_COUNT" ]; then
184+
echo "ERROR: Copilot file count (${COPILOT_COUNT}) does not match skill count (${SKILL_COUNT})"
185+
ERRORS=$((ERRORS + 1))
186+
fi
187+
if [ "$GEMINI_COUNT" -ne "$SKILL_COUNT" ]; then
188+
echo "ERROR: Gemini reference count (${GEMINI_COUNT}) does not match skill count (${SKILL_COUNT})"
189+
ERRORS=$((ERRORS + 1))
190+
fi
191+
if [ "$ERRORS" -gt 0 ]; then
192+
exit 1
193+
fi
194+
echo "OK: all per-tool file counts match skill count (${SKILL_COUNT})"
195+
196+
- name: Gemini import validation
197+
if: always()
198+
run: |
199+
ERRORS=0
200+
while IFS= read -r line; do
201+
REL="${line#@./}"
202+
FULL="integrations/gemini/${REL}"
203+
if [ ! -f "$FULL" ]; then
204+
echo "ERROR: Gemini @import not found: ${FULL}"
205+
ERRORS=$((ERRORS + 1))
206+
fi
207+
done < <(grep -E '^@\.\/' integrations/gemini/GEMINI.md || true)
208+
if [ "$ERRORS" -gt 0 ]; then
209+
echo "Gemini import validation failed: ${ERRORS} missing file(s)"
210+
exit 1
211+
fi
212+
echo "OK: all Gemini @import references resolve"
213+
214+
- name: Install shellcheck
215+
if: always()
216+
run: sudo apt-get install -y shellcheck
217+
218+
- name: shellcheck on scripts
219+
if: always()
220+
run: |
221+
ERRORS=0
222+
for script in scripts/convert.sh scripts/install.sh; do
223+
if [ -f "$script" ]; then
224+
echo "Checking $script ..."
225+
if ! shellcheck --severity=warning "$script"; then
226+
ERRORS=$((ERRORS + 1))
227+
fi
228+
else
229+
echo "SKIP: $script not found"
230+
fi
231+
done
232+
if [ "$ERRORS" -gt 0 ]; then
233+
exit 1
234+
fi

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
66

7+
## [1.5.0] - 2026-03-18
8+
9+
### Added
10+
11+
- **Multi-Tool Support** — Skills now work with Cursor, Aider, Windsurf, GitHub Copilot, and Gemini CLI in addition to Claude Code
12+
- **convert.sh** — Transforms all skills into 5 tool-specific formats; handles YAML frontmatter extraction, Windsurf size limits, and Gemini @import structure without external dependencies
13+
- **install.sh** — Interactive installer with auto-detection for installed tools; installs to correct location per tool
14+
- **integrations/** — Pre-built converted output for all 5 tools, committed and ready to copy into any project
15+
- **CI validation** — Workflow checks integrations/ for drift from source skills and validates format compliance on every push
16+
717
## [1.4.0] - 2026-03-16
818

919
### Added

README.md

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ git clone https://github.com/thatrebeccarae/claude-marketing.git
4646
<br>
4747
<br>
4848

49-
[Why This Exists](#why-this-exists) · [Who This Is For](#who-this-is-for) · [Why Depth Over Breadth](#why-depth-over-breadth) · [What's Inside](#whats-inside) · [Skills](#skills) · [Skill Packs](#skill-packs) · [Agents](#agents) · [Workflows](#workflows) · [Getting Started](#getting-started) · [How Skills Work](#how-skills-work) · [Composing Skills](#composing-skills) · [Example Prompts](#example-prompts) · [Configuration](#configuration) · [Security](#security) · [Troubleshooting](#troubleshooting) · [Documentation](#documentation) · [Contributing](#contributing) · [License](#license)
49+
[Why This Exists](#why-this-exists) · [Who This Is For](#who-this-is-for) · [Why Depth Over Breadth](#why-depth-over-breadth) · [What's Inside](#whats-inside) · [Skills](#skills) · [Skill Packs](#skill-packs) · [Agents](#agents) · [Workflows](#workflows) · [Getting Started](#getting-started) · [Multi-Tool Support](#multi-tool-support) · [How Skills Work](#how-skills-work) · [Composing Skills](#composing-skills) · [Example Prompts](#example-prompts) · [Configuration](#configuration) · [Security](#security) · [Troubleshooting](#troubleshooting) · [Documentation](#documentation) · [Contributing](#contributing) · [License](#license)
5050

5151
</div>
5252

@@ -212,6 +212,72 @@ The wizard checks prerequisites, walks you through API key setup, installs depen
212212
> [!TIP]
213213
> See [DTC Getting Started](skill-packs/dtc-getting-started.md) or [Paid Media Getting Started](skill-packs/paid-media-getting-started.md) for detailed setup per platform.
214214
215+
## Multi-Tool Support
216+
217+
Skills work with 5 AI coding tools beyond Claude Code — Cursor, Aider, Windsurf, GitHub Copilot, and Gemini CLI. Run `install.sh` for interactive setup, or follow the per-tool instructions below.
218+
219+
### Quick Install
220+
221+
```bash
222+
bash scripts/install.sh
223+
```
224+
225+
Auto-detects your installed tools, lets you choose which to install for.
226+
227+
### Per-Tool Quick-Start
228+
229+
**Cursor** — One rule file per skill, auto-suggested by Cursor agent.
230+
231+
```bash
232+
cp integrations/cursor/*.mdc your-project/.cursor/rules/
233+
```
234+
235+
**Aider** — Skills load every session via config.
236+
237+
```bash
238+
cp integrations/aider/CONVENTIONS.md your-project/
239+
echo "read: CONVENTIONS.md" >> your-project/.aider.conf.yml
240+
```
241+
242+
**Windsurf** — All skills in one file, always active.
243+
244+
```bash
245+
cp integrations/windsurf/.windsurfrules your-project/
246+
```
247+
248+
**GitHub Copilot** — Works in VS Code and on GitHub.com.
249+
250+
```bash
251+
cp integrations/copilot/*.instructions.md your-project/.github/instructions/
252+
```
253+
254+
**Gemini CLI** — Modular loading via `@import`.
255+
256+
```bash
257+
cp -r integrations/gemini/* your-project/
258+
```
259+
260+
### Compatibility Matrix
261+
262+
Not all skill content translates across formats — some tools have size limits or don't support file references.
263+
264+
| Content | Claude Code | Cursor | Aider | Windsurf | Copilot | Gemini CLI |
265+
|---------|:-----------:|:------:|:-----:|:--------:|:-------:|:----------:|
266+
| Core capabilities | Full | Full | Summary | Summary | Full | Full |
267+
| Reference data | Full | Partial |||| Full (@import) |
268+
| Examples | Full ||||| Optional |
269+
| Install command | Full ||||||
270+
271+
### Advanced Usage
272+
273+
To regenerate `integrations/` after editing skills:
274+
275+
```bash
276+
bash scripts/convert.sh
277+
```
278+
279+
See [CONTRIBUTING.md](CONTRIBUTING.md) for adding new skills and keeping converted output in sync.
280+
215281
## How Skills Work
216282

217283
A Claude Code skill is a structured domain expertise file that loads into Claude automatically when invoked. Each skill contains diagnostic frameworks, industry benchmarks, and platform-specific reference data that Claude doesn't have out of the box — the kind of context that turns a general-purpose AI into a specialist.

0 commit comments

Comments
 (0)