Skip to content

Commit 17203f8

Browse files
author
Joey Ashley
committed
ci: add GitHub Actions tests badge + traction launch prep
1 parent fd67730 commit 17203f8

10 files changed

Lines changed: 481 additions & 0 deletions

.github/workflows/tests.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-python@v5
15+
with:
16+
python-version: "3.13"
17+
- run: pip install -r requirements.txt
18+
- run: python -m pytest test/ -q
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# PR: awesome-claude-code
2+
3+
**Target repo**: https://github.com/hesreallyhim/awesome-claude-code
4+
5+
---
6+
7+
## PR Title
8+
9+
```
10+
Add skill-split: section-level SQLite library for Claude Code skills
11+
```
12+
13+
---
14+
15+
## PR Body
16+
17+
```
18+
## What this adds
19+
20+
- [skill-split](https://github.com/JoeyBe1/skill-split) - Section-level SQLite library for Claude Code skills. Search, checkout, and compose any section of any skill/command/plugin with 99% token savings.
21+
22+
## Why it belongs here
23+
24+
skill-split directly enhances Claude Code's skill/command ecosystem by making large skill libraries navigable at the section level. Instead of loading full 21KB files into context, agents can search, retrieve, and compose individual sections (200 bytes each). It handles skills, commands, plugins, hooks, and scripts.
25+
26+
## Category suggestion
27+
28+
Add under the **Tools** or **Utilities** section (or whichever section covers Claude Code developer tooling).
29+
```
30+
31+
---
32+
33+
## Steps to Submit
34+
35+
1. **Fork the repo**
36+
- Go to https://github.com/hesreallyhim/awesome-claude-code
37+
- Click **Fork** (top right)
38+
39+
2. **Edit `README.md`**
40+
- Find the appropriate section (Tools, Utilities, or Developer Tools)
41+
- Add the entry on a new line:
42+
```
43+
- [skill-split](https://github.com/JoeyBe1/skill-split) - Section-level SQLite library for Claude Code skills. Search, checkout, and compose any section of any skill/command/plugin with 99% token savings.
44+
```
45+
46+
3. **Commit the change**
47+
- Commit message: `Add skill-split: section-level SQLite library`
48+
49+
4. **Open PR**
50+
- Base: `hesreallyhim/awesome-claude-code` `main`
51+
- Head: your fork
52+
- Title: `Add skill-split: section-level SQLite library for Claude Code skills`
53+
- Body: paste from above
54+
55+
5. **Check contribution guidelines first**
56+
- Some awesome-lists require a specific format or minimum GitHub stars threshold
57+
- Check `CONTRIBUTING.md` or `README.md` preamble before submitting
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# PR: awesome-claude-skills
2+
3+
**Target repo**: https://github.com/travisvn/awesome-claude-skills
4+
5+
---
6+
7+
## PR Title
8+
9+
```
10+
Add skill-split: section-level SQLite library for Claude Code skills
11+
```
12+
13+
---
14+
15+
## PR Body
16+
17+
```
18+
## What this adds
19+
20+
- [skill-split](https://github.com/JoeyBe1/skill-split) - Section-level SQLite library for Claude Code skills. Search, checkout, and compose any section of any skill/command/plugin with 99% token savings.
21+
22+
## Why it belongs here
23+
24+
skill-split is directly relevant to Claude Code skill management. It provides a SQLite-backed library for storing, searching, and deploying skills at the section level — letting you retrieve exactly the section of a skill you need (200 bytes) instead of the full file (21KB+). Supports skills, commands, plugins, hooks, and scripts.
25+
26+
## Category suggestion
27+
28+
Add under the **Tools** section, or whichever category covers skill management utilities.
29+
```
30+
31+
---
32+
33+
## Steps to Submit
34+
35+
1. **Fork the repo**
36+
- Go to https://github.com/travisvn/awesome-claude-skills
37+
- Click **Fork** (top right)
38+
39+
2. **Find the right section in `README.md`**
40+
- Look for a Tools, Utilities, or Skill Management section
41+
- If no clear fit, add under a general **Tools** heading
42+
43+
3. **Add the entry**
44+
```
45+
- [skill-split](https://github.com/JoeyBe1/skill-split) - Section-level SQLite library for Claude Code skills. Search, checkout, and compose any section of any skill/command/plugin with 99% token savings.
46+
```
47+
48+
4. **Commit the change**
49+
- Commit message: `Add skill-split: section-level SQLite library`
50+
51+
5. **Open PR**
52+
- Base: `travisvn/awesome-claude-skills` `main`
53+
- Head: your fork
54+
- Title: `Add skill-split: section-level SQLite library for Claude Code skills`
55+
- Body: paste from above
56+
57+
6. **Check contribution guidelines**
58+
- Review `CONTRIBUTING.md` for any format requirements before submitting
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Reddit Post: r/ClaudeAI
2+
3+
**Subreddit**: r/ClaudeAI
4+
**URL**: https://www.reddit.com/r/ClaudeAI/
5+
6+
---
7+
8+
## Title
9+
10+
```
11+
I built a section-level skill library for Claude Code — 99% token savings
12+
```
13+
14+
---
15+
16+
## Body
17+
18+
```
19+
If you use Claude Code with a large skill or command library, you've probably run into the context tax: loading a full 21KB skill file to answer one question burns thousands of tokens before you've even started the task. I built skill-split to fix that.
20+
21+
**skill-split** stores every section of every skill, command, plugin, hook, and script in a SQLite database. Search returns individual sections — around 200 bytes each — instead of entire files. That's where the 99% token savings number comes from: you get exactly what you need, nothing more.
22+
23+
The workflow is: search with a keyword or semantic query, get back the matching section ID, check it out to a target directory, and use it. You can also compose new skills by assembling sections from different files. It handles YAML frontmatter, markdown headings, XML tags, Python/JS/TS/shell scripts, and Claude Code-specific formats like plugin.json and hooks.json.
24+
25+
I've ingested 1,365 skill files (19,207 sections) and verified byte-perfect round-trips. Runs fully local with SQLite — no external services required for the core search.
26+
27+
Repo: https://github.com/JoeyBe1/skill-split
28+
```
29+
30+
---
31+
32+
## Post Notes
33+
34+
- Post as a text post, not a link post (more engagement)
35+
- Cross-post to r/ClaudeDev if that sub exists
36+
- Reply to early comments quickly to boost ranking
37+
- If the post gets traction, pin a comment with the demo GIF link once it's recorded

.planning/traction/04-show-hn.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Hacker News: Show HN
2+
3+
**URL**: https://news.ycombinator.com/submit
4+
5+
---
6+
7+
## Title
8+
9+
```
10+
Show HN: Section-level SQLite library for Claude Code skills (99% token savings)
11+
```
12+
13+
---
14+
15+
## Body
16+
17+
```
18+
I built skill-split to solve a concrete problem with large Claude Code skill libraries: loading full skill files into context is expensive. A typical skill file runs 15–21KB. Multiply that by a dozen skills and you've burned most of your context window before the task starts.
19+
20+
skill-split parses every section of every skill, command, plugin, hook, and script into a SQLite database. Sections average around 200 bytes. Search returns section IDs; you retrieve exactly what you need. Round-trip is byte-perfect — the original file reconstructs exactly from the stored sections. I've tested this on 1,365 files (19,207 sections) with SHA256 verification.
21+
22+
The stack is intentionally minimal: Python, SQLite with FTS5 for BM25 keyword search, and optional OpenAI embeddings for hybrid semantic search. No server required for the core workflow. Checkout deploys individual sections to their target paths; checkin tracks what's deployed. There's also a compose command to assemble new skills from sections across different source files.
23+
24+
Repo: https://github.com/JoeyBe1/skill-split
25+
```
26+
27+
---
28+
29+
## Submission Notes
30+
31+
- Show HN posts perform best on weekdays between 9am–12pm Eastern
32+
- Keep the title under 80 characters (current: 68 chars — good)
33+
- Do not edit the title after submission (HN penalizes edits)
34+
- Post the body text as your first comment immediately after submitting
35+
- Respond to every early comment to drive ranking
36+
- Do not ask for upvotes
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Reddit Post: r/LocalLLaMA
2+
3+
**Subreddit**: r/LocalLLaMA
4+
**URL**: https://www.reddit.com/r/LocalLLaMA/
5+
6+
---
7+
8+
## Title
9+
10+
```
11+
Section-level SQLite index for LLM skill libraries — 99% token reduction per query
12+
```
13+
14+
---
15+
16+
## Body
17+
18+
```
19+
Context window efficiency is the core constraint on what you can do with a local or API-limited model. I built skill-split to address one specific drain: loading full skill/tool/plugin files into context when you only need one section.
20+
21+
**The problem**: A typical Claude Code skill file is 15–21KB. A library of 50 skills is a megabyte of context you're paying for on every session. Most of that content is irrelevant to the current task.
22+
23+
**The approach**: skill-split parses every section of every file into SQLite (FTS5 with BM25 ranking). A search query returns individual sections averaging ~200 bytes — a 99% reduction vs. loading the full file. You get exactly the relevant section, not the whole document.
24+
25+
The architecture is intentionally offline-first: BM25 keyword search runs fully local with no API calls. If you want semantic search, you can layer in vector embeddings (OpenAI or any compatible endpoint), but the core system requires nothing external. SQLite FTS5 handles multi-word queries with OR logic and supports AND/OR/NEAR boolean operators.
26+
27+
I've validated it against 1,365 files (19,207 sections) with byte-perfect round-trip verification using SHA256. It handles markdown headings, YAML frontmatter, XML tags, Python/JS/TS/shell scripts, and JSON configs — anything structured enough to split into meaningful sections.
28+
29+
Could be adapted for any local LLM skill/tool library beyond Claude Code. The parser and SQLite layer are generic.
30+
31+
Repo: https://github.com/JoeyBe1/skill-split
32+
```
33+
34+
---
35+
36+
## Post Notes
37+
38+
- r/LocalLLaMA audience cares about: token efficiency, offline-first, concrete benchmarks
39+
- Lead with the numbers and the local-first angle — this audience is skeptical of cloud dependencies
40+
- Avoid marketing language; be direct about tradeoffs (e.g., semantic search requires embeddings API)
41+
- Be ready to discuss the BM25 vs. vector tradeoffs in comments
42+
- Post as a text post for better ranking in this sub

.planning/traction/06-tweet.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Tweet Thread: skill-split
2+
3+
**Platform**: X (Twitter)
4+
**Account**: yours
5+
**Thread length**: 3 tweets
6+
7+
---
8+
9+
## Tweet 1 (Hook)
10+
11+
```
12+
Loading full 21KB skill files into Claude Code every session?
13+
14+
I reduced that to ~200 bytes per query.
15+
16+
99% token savings — here's how:
17+
```
18+
19+
---
20+
21+
## Tweet 2 (What it does)
22+
23+
```
24+
skill-split stores every section of every skill, command, and plugin in SQLite.
25+
26+
Search returns the exact section you need (not the whole file).
27+
Check it out. Compose new skills from sections across files.
28+
29+
Works on 19,207 sections across 1,365 files. Byte-perfect round-trip.
30+
```
31+
32+
---
33+
34+
## Tweet 3 (Link + tags)
35+
36+
```
37+
Fully local. BM25 keyword search out of the box.
38+
Optional semantic/hybrid search with embeddings.
39+
40+
github.com/JoeyBe1/skill-split
41+
42+
@AnthropicAI #ClaudeCode #LLM #DeveloperTools
43+
```
44+
45+
---
46+
47+
## Thread Notes
48+
49+
- Post tweets in rapid succession as a thread (reply to each)
50+
- Tweet 1 is the hook — do not include the link here
51+
- The gap between tweet 1 and 2 is intentional: creates a pause before the reveal
52+
- Consider pinning this thread to your profile after posting
53+
- If engagement picks up, quote-tweet with the demo GIF once recorded
54+
- Optimal posting time: Tuesday–Thursday, 9am–11am in your timezone

0 commit comments

Comments
 (0)