Skip to content

Commit 230815d

Browse files
Shane Butlerclaude
andcommitted
feat: add open-source polish — LICENSE, CI, templates, pyproject.toml
- Add MIT LICENSE - Add pyproject.toml with Python 3.9+ and dev dependencies - Add .github/workflows/ci.yml (pytest on Python 3.10/3.11/3.12) - Add .github/ISSUE_TEMPLATE/ (bug report + feature request) - Add .github/SECURITY.md (responsible disclosure) - Add .github/CODEOWNERS (security-sensitive file review) - Add .pre-commit-config.yaml with gitleaks hook - Add .gitleaks.toml with allowlists for placeholder tokens - Add CHANGELOG.md (v1.0.0 entry) - Add HISTORY.md (provenance record) - Update README.md with badges, setup scripts, requirements, license Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d79e5e9 commit 230815d

12 files changed

Lines changed: 282 additions & 3 deletions

File tree

.github/CODEOWNERS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Code owners — these files require review from the maintainer
2+
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
3+
4+
# Security-sensitive files
5+
.gitignore @shanebutler
6+
.claude/ @shanebutler
7+
connection_templates/ @shanebutler
8+
scripts/ @shanebutler
9+
.github/ @shanebutler
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: Bug Report
3+
about: Something isn't working as expected
4+
title: ''
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
**What happened?**
10+
A clear description of the bug.
11+
12+
**What did you expect?**
13+
What should have happened instead.
14+
15+
**Steps to reproduce**
16+
1. Run `...`
17+
2. Ask Claude `...`
18+
3. See error
19+
20+
**Environment**
21+
- OS: [e.g., macOS 14.2, Ubuntu 22.04]
22+
- Python version: [e.g., 3.11.5]
23+
- Claude Code version: [run `claude --version`]
24+
- Data source: [MotherDuck / local DuckDB / CSV]
25+
26+
**Error output**
27+
```
28+
Paste any error messages here
29+
```
30+
31+
**Additional context**
32+
Anything else that might help (screenshots, log files, etc.).
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an improvement or new capability
4+
title: ''
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
**What problem does this solve?**
10+
Describe the use case or pain point.
11+
12+
**Proposed solution**
13+
How you think it should work.
14+
15+
**Alternatives considered**
16+
Other approaches you thought about.
17+
18+
**Additional context**
19+
Examples, screenshots, or references.

.github/SECURITY.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
If you discover a security vulnerability in this project, please report it responsibly.
6+
7+
**Do NOT open a public GitHub issue for security vulnerabilities.**
8+
9+
Instead, email: **shane@aianalystlab.ai**
10+
11+
Include:
12+
- Description of the vulnerability
13+
- Steps to reproduce
14+
- Potential impact
15+
- Suggested fix (if you have one)
16+
17+
You should receive a response within 48 hours. We will work with you to understand and address the issue before any public disclosure.
18+
19+
## Scope
20+
21+
This policy covers:
22+
- The AI Analyst repository code
23+
- Configuration files and templates
24+
- Setup scripts
25+
- Data handling and connection logic
26+
27+
This policy does NOT cover:
28+
- Claude Code itself (report to [Anthropic](https://www.anthropic.com/security))
29+
- MotherDuck (report to [MotherDuck](https://motherduck.com))
30+
- Third-party dependencies (report to their maintainers)
31+
32+
## Best Practices for Users
33+
34+
- Never commit `.claude/mcp.json` with real tokens (use `.claude/mcp.json.example`)
35+
- Never commit connection templates with credentials (use `.yaml.example` files)
36+
- Never share your MotherDuck token publicly
37+
- Review `.gitignore` before pushing to ensure no sensitive data is tracked

.github/workflows/ci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: CI
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+
strategy:
13+
matrix:
14+
python-version: ['3.10', '3.11', '3.12']
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up Python ${{ matrix.python-version }}
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
24+
- name: Install dependencies
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install -e ".[dev]" 2>/dev/null || pip install pandas matplotlib duckdb pyyaml pytest faker
28+
29+
- name: Download sample data
30+
run: bash scripts/download-data.sh --sample
31+
32+
- name: Run tests
33+
run: python -m pytest tests/ -v --tb=short

.gitleaks.toml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
title = "AI Analyst gitleaks config"
2+
3+
[allowlist]
4+
description = "Known safe patterns"
5+
paths = [
6+
'''\.yaml\.example$''',
7+
'''\.json\.example$''',
8+
'''data/checksums\.sha256$''',
9+
]
10+
regexTarget = "match"
11+
regexes = [
12+
'''your-motherduck-token-here''',
13+
'''your-token-here''',
14+
'''your_password''',
15+
'''your-proxy:port''',
16+
'''placeholder''',
17+
]
18+
19+
[[rules]]
20+
id = "connection-template-credentials"
21+
description = "Credentials in connection template YAML files"
22+
regex = '''(password|token|secret|api_key)\s*[:=]\s*["\']?[A-Za-z0-9+/=_-]{20,}'''
23+
path = '''connection_templates/.*\.yaml$'''
24+
tags = ["credential"]

.pre-commit-config.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
repos:
2+
- repo: https://github.com/gitleaks/gitleaks
3+
rev: v8.18.0
4+
hooks:
5+
- id: gitleaks

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
## [1.0.0] - 2026-02-19
6+
7+
### Added
8+
- Initial public release
9+
- 17 specialized analysis agents with DAG-based parallel execution
10+
- 30 auto-applied skills (question framing, data quality, visualization, validation)
11+
- 14 slash commands for interactive use
12+
- NovaMart demo dataset (13 tables, 50K users, 6.5M events)
13+
- Tiered data system: Tier 1 in git, Tier 2 via GitHub Releases
14+
- Setup scripts: `setup.sh`, `download-data.sh`, `build-duckdb.sh`
15+
- Multi-warehouse support: DuckDB, MotherDuck, Postgres, BigQuery, Snowflake
16+
- SWD-styled chart generation with collision detection
17+
- Marp slide deck creation with branded HTML components
18+
- 4-layer validation framework with A-F confidence scoring
19+
- Knowledge system for cross-session memory
20+
- Metric dictionary with standardized definitions
21+
- Analysis archive with pattern extraction

HISTORY.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# History
2+
3+
## Provenance
4+
5+
This repository was extracted from the `ai-analytics-for-builders` monorepo on 2026-02-19.
6+
7+
- **Source:** `bootcamp/repo/` subdirectory of the monorepo
8+
- **Extraction method:** `git archive HEAD:bootcamp/repo/` (clean snapshot, no history)
9+
- **Development period:** February 13-19, 2026
10+
- **Contributors:** Shane Butler, with Claude Code (Opus) as AI pair programmer
11+
- **Original context:** Student-facing product for the AI Analyst Bootcamp (weekend intensive)
12+
13+
## Why no git history?
14+
15+
The monorepo contains multiple products (courses, email pipelines, podcast tools, marketing). Extracting git history for just `bootcamp/repo/` would have carried irrelevant commits from other projects and leaked internal file paths. A clean snapshot gives a smaller, cleaner repo.
16+
17+
The full development history is preserved in the private `ai-analytics-for-builders` monorepo for provenance.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Shane Butler
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.

0 commit comments

Comments
 (0)