skill-blast 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,49 @@
1
+ name: Bug Report
2
+ description: Something broke — help us fix it
3
+ labels: ["bug"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: "Thanks for taking the time to report a bug!"
8
+
9
+ - type: input
10
+ id: os
11
+ attributes:
12
+ label: Operating System
13
+ placeholder: "e.g. Ubuntu 24.04 / macOS 15 / Windows 11"
14
+ validations:
15
+ required: true
16
+
17
+ - type: input
18
+ id: python
19
+ attributes:
20
+ label: Python Version
21
+ placeholder: "python --version output"
22
+ validations:
23
+ required: true
24
+
25
+ - type: input
26
+ id: skill-blast-version
27
+ attributes:
28
+ label: skill-blast Version
29
+ placeholder: "skill-blast --version output"
30
+ validations:
31
+ required: true
32
+
33
+ - type: textarea
34
+ id: what-happened
35
+ attributes:
36
+ label: What happened?
37
+ description: What did you run and what did you see?
38
+ placeholder: |
39
+ Command: skill-blast --all
40
+ Error: ...
41
+ validations:
42
+ required: true
43
+
44
+ - type: textarea
45
+ id: expected
46
+ attributes:
47
+ label: What did you expect?
48
+ validations:
49
+ required: true
@@ -0,0 +1,55 @@
1
+ name: Skill Request
2
+ description: Suggest a new skill to add to the list
3
+ labels: ["skill-request"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: "Know a great AI agent skill that should be in skill-blast? Tell us about it!"
8
+
9
+ - type: input
10
+ id: skill-name
11
+ attributes:
12
+ label: Skill Name
13
+ placeholder: "e.g. my-awesome-skill"
14
+ validations:
15
+ required: true
16
+
17
+ - type: input
18
+ id: repo
19
+ attributes:
20
+ label: GitHub Repo
21
+ placeholder: "owner/repo (must be public)"
22
+ validations:
23
+ required: true
24
+
25
+ - type: input
26
+ id: subpath
27
+ attributes:
28
+ label: Subpath (if skill is inside a larger repo)
29
+ placeholder: "e.g. skills/my-skill (leave blank if whole repo is the skill)"
30
+
31
+ - type: dropdown
32
+ id: category
33
+ attributes:
34
+ label: Category
35
+ options:
36
+ - UI/Design
37
+ - Content
38
+ - Writing
39
+ - Research
40
+ - Marketing
41
+ - Product
42
+ - Engineering
43
+ - Media
44
+ - Health
45
+ - New category (explain below)
46
+ validations:
47
+ required: true
48
+
49
+ - type: textarea
50
+ id: why
51
+ attributes:
52
+ label: Why should it be included?
53
+ description: What problem does it solve? What makes it stand out?
54
+ validations:
55
+ required: true
@@ -0,0 +1,68 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ lint-and-test:
11
+ name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
17
+ os: [ubuntu-latest, macos-latest, windows-latest]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install -e ".[dev]"
31
+
32
+ - name: Import check
33
+ run: python -c "from skill_blast.cli import main; from skill_blast.skills import ALL_SKILLS; print(f'OK — {len(ALL_SKILLS)} skills loaded')"
34
+
35
+ - name: CLI --list smoke test
36
+ run: skill-blast --list
37
+
38
+ - name: CLI --dry-run smoke test
39
+ run: skill-blast --all --dry-run --agents claude-code
40
+
41
+ - name: Run tests
42
+ run: pytest tests/ -v
43
+
44
+ publish:
45
+ name: Publish to PyPI
46
+ needs: lint-and-test
47
+ runs-on: ubuntu-latest
48
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
49
+ environment: pypi
50
+
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+
54
+ - name: Set up Python
55
+ uses: actions/setup-python@v5
56
+ with:
57
+ python-version: "3.11"
58
+
59
+ - name: Install hatch
60
+ run: pip install hatch
61
+
62
+ - name: Build
63
+ run: hatch build
64
+
65
+ - name: Publish to PyPI
66
+ uses: pypa/gh-action-pypi-publish@release/v1
67
+ with:
68
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,44 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ jobs:
9
+ release:
10
+ name: Create GitHub Release
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install hatch
24
+ run: pip install hatch
25
+
26
+ - name: Build dist
27
+ run: hatch build
28
+
29
+ - name: Extract changelog for this version
30
+ id: changelog
31
+ run: |
32
+ VERSION="${GITHUB_REF_NAME#v}"
33
+ NOTES=$(awk "/^## \[$VERSION\]/{flag=1; next} /^## \[/{flag=0} flag" CHANGELOG.md)
34
+ echo "notes<<EOF" >> "$GITHUB_OUTPUT"
35
+ echo "$NOTES" >> "$GITHUB_OUTPUT"
36
+ echo "EOF" >> "$GITHUB_OUTPUT"
37
+
38
+ - name: Create GitHub Release
39
+ uses: softprops/action-gh-release@v2
40
+ with:
41
+ body: ${{ steps.changelog.outputs.notes }}
42
+ files: dist/*
43
+ env:
44
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,35 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyo
5
+ *.pyd
6
+ .Python
7
+ *.egg-info/
8
+ dist/
9
+ build/
10
+ .eggs/
11
+ *.egg
12
+ *.whl
13
+
14
+ # Virtual envs
15
+ .venv/
16
+ venv/
17
+ env/
18
+ ENV/
19
+
20
+ # Testing
21
+ .pytest_cache/
22
+ .coverage
23
+ htmlcov/
24
+ .tox/
25
+
26
+ # IDEs
27
+ .idea/
28
+ .vscode/
29
+ *.swp
30
+ *.swo
31
+ .DS_Store
32
+ Thumbs.db
33
+
34
+ # Hatch
35
+ .hatch/
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to skill-blast are documented here.
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
+
6
+ ---
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - `--uninstall` flag to remove installed skills from agent directories
12
+ - `--check` flag for health diagnostics (broken symlinks, cache/store status, git connectivity)
13
+ - `--version` flag to print current version
14
+ - Integration tests for installer logic (mocked filesystem + subprocess)
15
+ - Agent detection tests
16
+ - Troubleshooting guide in README
17
+ - Management commands section in README
18
+
19
+ ### Changed
20
+ - Replaced `YOUR_USERNAME` placeholder with `Venkatesh-6921` in all files
21
+
22
+ ## [1.0.0] — 2026-05-10
23
+
24
+ ### Added
25
+ - 50 curated AI agent skills across 9 categories
26
+ - Interactive wizard for non-developers (no flags needed)
27
+ - Auto-detection for 8 agents: Claude Code, OpenCode, Antigravity, Gemini CLI, Cursor, Windsurf, Continue.dev, Aider
28
+ - Cross-platform: Linux, macOS, Windows
29
+ - One-liner installers: `install.sh`, `install.ps1`, `install.bat`
30
+ - PyPI package: `pip install skill-blast`
31
+ - `--dry-run`, `--update`, `--list`, `--only`, `--skip`, `--agents` flags
32
+ - Symlink-based install on Linux/macOS (copy-based on Windows)
33
+ - Central skill store at `~/.skill-blast/` shared across all agents
34
+ - Rich TUI with progress bar, live status, summary table
@@ -0,0 +1,114 @@
1
+ # Contributing to skill-blast
2
+
3
+ Thanks for helping make skill-blast better! Here's everything you need.
4
+
5
+ ---
6
+
7
+ ## Ways to contribute
8
+
9
+ - **Add a new skill** — found a great one not in the list?
10
+ - **Fix a broken repo** — skill URLs change; PRs to update are always welcome
11
+ - **Improve detection** — better agent auto-detection for any platform
12
+ - **Bug reports** — open an issue with your OS + Python version
13
+
14
+ ---
15
+
16
+ ## Adding a new skill
17
+
18
+ 1. **Fork** the repo and clone your fork
19
+ 2. Open `skill_blast/skills.py`
20
+ 3. Add a `Skill(...)` entry to `ALL_SKILLS`:
21
+
22
+ ```python
23
+ Skill(
24
+ id=51, # next available ID
25
+ name="my-skill-name", # slug, used as folder name (no spaces)
26
+ repo="github-owner/repo-name", # GitHub owner/repo
27
+ subpath="path/to/skill/dir", # None if the whole repo is the skill
28
+ desc="One-line description", # shown in --list and progress bar
29
+ category="Engineering", # must match an existing category
30
+ tags=["tag1", "tag2"], # searchable tags (future use)
31
+ ),
32
+ ```
33
+
34
+ 4. **Verify the `subpath`** (important!):
35
+
36
+ If the skill lives inside a larger repo (e.g., `anthropics/skills` → `skills/frontend-design`):
37
+ ```bash
38
+ # Clone the repo and check the subpath exists
39
+ git clone --depth=1 https://github.com/owner/repo /tmp/test-repo
40
+ ls /tmp/test-repo/path/to/skill/ # should contain SKILL.md or similar
41
+ rm -rf /tmp/test-repo
42
+ ```
43
+ If the entire repo *is* the skill, set `subpath=None`.
44
+
45
+ 5. **Test locally:**
46
+
47
+ ```bash
48
+ pip install -e .
49
+ skill-blast --dry-run --only Engineering # check it appears in list
50
+ skill-blast --list --only Engineering # verify metadata looks right
51
+ skill-blast --only Engineering # actually install
52
+ skill-blast --check # verify symlinks are healthy
53
+ ```
54
+
55
+ 6. **Run the test suite:**
56
+
57
+ ```bash
58
+ pytest tests/ -v
59
+ ```
60
+
61
+ 7. Open a PR with:
62
+ - The `skills.py` change
63
+ - A one-line note in `CHANGELOG.md` under `Unreleased`
64
+
65
+ ---
66
+
67
+ ## Categories
68
+
69
+ | Category | When to use |
70
+ |---|---|
71
+ | `UI/Design` | Anything about visual output, CSS, color, diagrams |
72
+ | `Content` | Social media, posts, hooks, publishing |
73
+ | `Writing` | Prose style, editing, humanizing |
74
+ | `Research` | Information gathering, synthesis, citations |
75
+ | `Marketing` | SEO, CRO, email, ads, copywriting |
76
+ | `Product` | PM frameworks, JTBD, strategy |
77
+ | `Engineering` | Code quality, tooling, automation |
78
+ | `Media` | Video, audio, generative media |
79
+ | `Health` | Medical, wellness, personal data |
80
+
81
+ ---
82
+
83
+ ## Development setup
84
+
85
+ ```bash
86
+ git clone https://github.com/Venkatesh-6921/skill-blast
87
+ cd skill-blast
88
+ python -m venv .venv
89
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
90
+ pip install -e ".[dev]"
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Code style
96
+
97
+ - Python 3.9+ compatible
98
+ - No external dependencies beyond `rich`
99
+ - Keep `installer.py` pure — no UI code there
100
+ - All new platform logic goes in `agents.py`
101
+
102
+ ---
103
+
104
+ ## Reporting a broken skill
105
+
106
+ Open an issue with title: `[broken] skill-name` and include:
107
+ - Error message from skill-blast
108
+ - Output of `git clone https://github.com/owner/repo --depth=1` run manually
109
+
110
+ ---
111
+
112
+ ## License
113
+
114
+ By contributing, you agree your changes are licensed under MIT.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 skill-blast contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.