Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
c49e23e
release: v1.38.0 with continue-claude-work and skill-creator enhancem…
daymade Mar 7, 2026
6dc2805
fix(pdf-creator): restore list spacing preprocessor for pandoc
daymade Mar 11, 2026
29f85d2
docs(github-contributor): add high-quality PR formula and investigati…
daymade Mar 11, 2026
135a187
feat(transcript-fixer): add timestamp repair and section splitting sc…
daymade Mar 11, 2026
042c837
feat(claude-export-txt-better): add Claude Code export file fixer
daymade Mar 11, 2026
6c30b56
feat(skill-creator): add Step 0 prerequisites check with auto-install
daymade Mar 16, 2026
d8a7d45
refactor(CLAUDE.md): slim from 1549 to 318 lines via progressive disc…
daymade Mar 18, 2026
2192458
release: add scrapling-skill and fix script compatibility
daymade Mar 18, 2026
d4634cb
security: remove leaked API key from security.py docstring examples
daymade Mar 19, 2026
a496c91
fix: prevent dictionary false positives + add tunnel-doctor WSL/Go fi…
daymade Mar 21, 2026
639a6d3
feat(transcript-fixer): native AI correction as default mode (v1.3.0)
daymade Mar 22, 2026
ee38ae4
feat: add asr-transcribe-to-text skill + optimize skill-creator with …
daymade Mar 22, 2026
143995b
refactor: rename markdown-tools → doc-to-markdown (v2.0.0)
daymade Mar 22, 2026
a5f3a4b
fix(tunnel-doctor): add OrbStack transparent proxy + TUN conflict dia…
daymade Mar 22, 2026
d9e1967
feat(doc-to-markdown): CJK bold spacing, JSON pretty-print, 31 tests,…
daymade Mar 22, 2026
b9facf3
fix(doc-to-markdown): update marketplace.json description and version…
daymade Mar 22, 2026
87221d9
feat(pdf-creator): add theme system + Chrome backend; add terraform-s…
daymade Apr 2, 2026
6d261ce
feat(deep-research): V6.1 source accessibility policy and Counter-Rev…
daymade Apr 4, 2026
cafabd7
refactor(deep-research): replace case study company with ByteDance ex…
daymade Apr 4, 2026
28cd6bd
feat: add douban-skill + enhance skill-creator with development metho…
daymade Apr 4, 2026
0715ffb
feat: add three-layer PII defense system (pre-commit + gitleaks + CLA…
daymade Apr 4, 2026
5538258
Update capture-screen skill docs and versioning
daymade Apr 4, 2026
2ab0a76
chore: ignore .skill artifacts and remove tracked packages
daymade Apr 4, 2026
cfa702d
fix(skill-creator): replace 500-line hard limit with info density pri…
daymade Apr 4, 2026
22de8f0
Fix claude-code-history-files-finder: preserve directory structure on…
daymade Apr 5, 2026
2833aae
Fix PII: replace /Users/username/ with ~ and <username> placeholder
daymade Apr 5, 2026
ccc10f3
docs: update docs for directory structure preservation (v1.0.2)
daymade Apr 5, 2026
5c9eda4
feat: optimize skills + add pipeline handoff chaining across 9 skills
daymade Apr 5, 2026
efda299
feat(cli-demo-generator): deep rewrite with battle-tested VHS patterns
daymade Apr 6, 2026
6819943
chore: bump transcript-fixer skill version
daymade Apr 6, 2026
2097ffb
feat: add marketplace-dev skill for converting skills repos to plugin…
daymade Apr 6, 2026
1ff1499
feat: add pre-flight checklist hooks to marketplace-dev skill
daymade Apr 6, 2026
c120cd4
feat: add PostToolUse hook to auto-validate marketplace.json on edit
daymade Apr 6, 2026
6739806
feat: add SKILL.md edit hook — warns to bump version in marketplace.json
daymade Apr 6, 2026
22ec9f0
feat(twitter-reader): add fetch_article.py for X Articles with images
daymade Apr 6, 2026
000596d
chore(twitter-reader): bump version to 1.1.0
daymade Apr 6, 2026
9242af5
Update transcript-fixer guidance and hook paths
daymade Apr 6, 2026
edaeaa8
fix(pdf-creator): resolve CJK text garbled in weasyprint code blocks
daymade Apr 8, 2026
6bb8d7f
fix(pdf-creator): extend CJK coverage + handle pandoc-highlighted cod…
daymade Apr 10, 2026
4c11e85
feat(ima-copilot): add Tencent IMA companion skill v1.0.0
daymade Apr 11, 2026
dc52d49
feat(skill-creator): add wrapper-skill specialized workflow v1.7.0
daymade Apr 11, 2026
c798cdf
fix: counter-review findings for ima-copilot v1.0.1 + skill-creator v…
daymade Apr 11, 2026
208ba99
fix(skill-creator): wrapper-skill workflow completeness pass v1.7.2
daymade Apr 11, 2026
e1d818f
fix(mermaid-tools): narrow plugin snapshot
daymade Apr 11, 2026
3a09335
fix(skill-creator): declare validation dependencies
daymade Apr 11, 2026
8fc8d88
feat(marketplace): add daymade docs suite
daymade Apr 11, 2026
8aa53db
refactor(daymade-docs): make suite canonical source
daymade Apr 11, 2026
6cc31da
feat(marketplace-dev): add cache boundary workflow
daymade Apr 11, 2026
26a8265
feat(gangtise-copilot): add Gangtise OpenAPI companion skill v1.0.0
daymade Apr 11, 2026
334b697
feat: register 3 orphan skills (v1.46.0) + marketplace-dev v1.2.0 refine
daymade Apr 11, 2026
ce62873
docs: sync add-skill SOP with check_marketplace.sh and git add safety
daymade Apr 11, 2026
9c370d1
feat(wechat-article-scraper): v2.9.0 世界级微信文章抓取方案
daymade Apr 11, 2026
b4d4b79
feat(wechat-article-scraper): v2.9.1 新增视频提取功能
daymade Apr 11, 2026
3e175d1
chore(marketplace): 更新 wechat-article-scraper 版本到 3.0.0
daymade Apr 11, 2026
395a62b
chore(marketplace): 更新 wechat-article-scraper 版本到 3.0.1
daymade Apr 11, 2026
b1ccde4
chore(marketplace): 更新 wechat-article-scraper 版本到 3.0.2
daymade Apr 11, 2026
6d434e4
refactor(wechat-article-scraper): migrate 48 print statements to stan…
daymade Apr 11, 2026
cdc8b1b
feat(wechat-article-scraper): add SQLite caching system v3.1.0
daymade Apr 11, 2026
cc45529
feat(wechat-article-scraper): add content quality scoring system v3.2.0
daymade Apr 11, 2026
b93a645
feat(wechat-article-scraper): add automated test framework v3.3.0
daymade Apr 11, 2026
cdabdb7
feat(wechat-article-scraper): add Docker containerization support v3.4.0
daymade Apr 11, 2026
04ec4e2
chore(wechat-article-scraper): bump version to 3.5.0
daymade Apr 11, 2026
e9eb9f0
chore(wechat-article-scraper): bump version to 3.6.0 in marketplace.json
daymade Apr 11, 2026
8b32530
chore(wechat-article-scraper): bump version to 3.7.0 in marketplace.json
daymade Apr 11, 2026
437ac86
chore(wechat-article-scraper): bump version to 3.8.0 in marketplace.json
daymade Apr 11, 2026
903006d
chore(wechat-article-scraper): bump version to 3.9.0 in marketplace.json
daymade Apr 11, 2026
3b0ff54
chore(wechat-article-scraper): bump version to 3.10.0 in marketplace.…
daymade Apr 11, 2026
2e30d68
chore(wechat-article-scraper): bump version to 3.11.0 in marketplace.…
daymade Apr 11, 2026
6780eba
chore(wechat-article-scraper): bump version to 3.12.0 in marketplace.…
daymade Apr 11, 2026
d1c5095
chore(wechat-article-scraper): bump version to 3.13.0 in marketplace.…
daymade Apr 11, 2026
4dfd629
feat(wechat-article-scraper): add SQLite persistent storage v3.14.0
daymade Apr 11, 2026
3335fd6
feat(wechat-article-scraper): add batch task queue system v3.15.0
daymade Apr 11, 2026
f91b512
Release v3.16.0: Add modern React Web Dashboard for wechat-article-sc…
daymade Apr 11, 2026
94434bf
Release v3.17.0: Add RSS Generator and Document Advanced Features
daymade Apr 11, 2026
ad64b3b
Release v3.18.0: Add AI Summarizer and Webhook Notifier
daymade Apr 11, 2026
17861c1
Release v3.19.0: Add Third-Party Platform Exporters
daymade Apr 11, 2026
278a00a
feat(wechat-article-scraper): v3.20.0 - Add browser extension support
daymade Apr 11, 2026
a0ea046
feat(wechat-article-scraper): v3.21.0 - Add native CLI
daymade Apr 11, 2026
3b8b40e
chore(marketplace): update wechat-article-scraper keywords and descri…
daymade Apr 11, 2026
939faee
ci: move GitHub Actions workflow to correct location
daymade Apr 11, 2026
ef6f4d7
ci: fix macOS x64 runner to use macos-12
daymade Apr 11, 2026
3c208c5
ci: fix CLI build and Docker context issues
daymade Apr 11, 2026
b62c04e
chore: bump wechat-article-scraper version to 3.22.0
daymade Apr 11, 2026
73ce9ad
feat(wechat-article-scraper): 数据可视化仪表盘 Dashboard v1.0
daymade Apr 12, 2026
e273750
feat(wechat-article-scraper): AI智能分析引擎 v1.0
daymade Apr 12, 2026
28418e8
feat(wechat-article-scraper): 语义搜索与向量检索 v1.0
daymade Apr 12, 2026
e00b60c
feat(wechat-article-scraper): 自动化工作流引擎 v1.0
daymade Apr 12, 2026
157f69d
feat(wechat-article-scraper): 团队协作与第三方集成 v1.0
daymade Apr 12, 2026
42d422b
feat(wechat-article-scraper): 批量操作与多格式导出 v1.0
daymade Apr 12, 2026
e146688
feat(wechat-article-scraper): 浏览器扩展 v2.0 完善
daymade Apr 12, 2026
a102393
feat(wechat-article-scraper): 舆情监控系统 v1.0
daymade Apr 12, 2026
9ed87fe
feat(wechat-article-scraper): 数据可视化与智能分析系统 v1.0
daymade Apr 12, 2026
44900c8
feat(wechat-article-scraper): 智能写作助手 v1.0
daymade Apr 12, 2026
5999a93
feat(wechat-article-scraper): 定时任务与自动化系统 v1.0
daymade Apr 12, 2026
d0be800
feat(round92): 微信生态深度集成 - 实现 Cubox 级别"转发即收藏"体验
daymade Apr 12, 2026
ff0ffab
test(round93): 核心功能验证基准测试框架
daymade Apr 12, 2026
16f3fcd
ci(round94): GitHub Actions CI/CD 流水线
daymade Apr 12, 2026
828323d
feat(wechat-article-scraper): Round 95 - 集成 ftr-site-config 站点规则库
daymade Apr 12, 2026
f36a386
docs: update COMPETITOR_MATRIX - Edge TTS completed
daymade Apr 12, 2026
3138bbc
feat(wechat-article-scraper): v3.34.0 导出功能 + 移动端响应式布局
daymade Apr 12, 2026
373a4f7
feat(wechat-article-scraper): v3.35.0 阅读器主题系统
daymade Apr 12, 2026
b0b6273
feat: 强化浏览器扩展方案,放弃后端抓取幻想
daymade Apr 12, 2026
3bcfdaa
chore(git): ignore generated artifacts
daymade Apr 13, 2026
877fc07
chore(security): defensive configs + archive ralph logs
daymade Apr 14, 2026
db994af
chore: remove wechat-article-scraper from marketplace registry
daymade Apr 14, 2026
43a02ec
chore: remove wechat-article-scraper release workflow
daymade Apr 14, 2026
59f9a20
feat(gangtise-copilot): add one-shot installation guide and bump to v…
Parsnip113 Apr 15, 2026
f8c8efc
feat(marketplace): add daymade-claude-code suite with canonical source
daymade Apr 19, 2026
eaa222f
chore: ignore Claude Code local settings and archive
daymade Apr 19, 2026
b18b9bc
feat(slides-creator): add narrative-first slide deck creation skill v…
daymade Apr 19, 2026
c0d75c0
chore(marketplace): register slides-creator v1.0.0 and bump to v1.49.0
daymade Apr 19, 2026
a3b3c8c
refactor(marketplace): flatten suite directories to repo root
daymade Apr 26, 2026
dcfb38b
chore(gitignore): ignore debugging-network-issues-workspace/
daymade Apr 26, 2026
ed6d28b
feat(marketplace): register debugging-network-issues + stepfun-tts an…
daymade Apr 26, 2026
ec7c313
feat(pdf-creator): CJK typography auto-injection + theme refinements …
daymade Apr 26, 2026
f3182f7
fix(pdf-creator): typography size unity + integration test path
daymade Apr 26, 2026
3cb9823
fix(pdf-creator): add CJK font fallback for inline code (default theme)
daymade Apr 26, 2026
9ff3352
fix(pdf-creator): keep table rows intact across page breaks
daymade Apr 26, 2026
11b096f
fix(pdf-creator): force CJK chars in inline code to use CJK fonts (no…
daymade Apr 26, 2026
6f29306
fix(pdf-creator): prefer CID TrueType CJK fonts over OpenType in code…
daymade Apr 26, 2026
04e404f
fix(pdf-creator): neutralize pandoc auto-emitted <col width> from das…
daymade Apr 26, 2026
80e94fd
docs(pdf-creator): troubleshoot — CJK in inline code (Preview) + col1…
daymade Apr 27, 2026
b2003d6
feat(statusline-generator): context window display with token counts …
daymade Apr 28, 2026
5a1b269
chore: remove ralph loop generated artifacts
daymade May 7, 2026
93cfa49
refactor(marketplace): move skill-creator under daymade-skills namespace
daymade May 7, 2026
89e6ddf
chore: remove mistakenly committed cloud/lessons-learned.md
daymade May 7, 2026
b03fda8
restructure: move skill-creator, skill-reviewer, skills-search into d…
daymade May 7, 2026
99c76a7
feat(pdf-creator): batch theme support + mobile theme + anti-pattern …
daymade May 9, 2026
3f3aeed
fix(marketplace): remove skills: ["./"] from 13 plugins (#64)
daymade May 9, 2026
41d979a
refactor(marketplace): align plugin source/skills with official pattern
daymade May 9, 2026
b51ce8c
docs: sync all documentation with official source/skills pattern
daymade May 9, 2026
35e2076
feat(marketplace): create daymade-audio suite for speech pipeline
daymade May 9, 2026
3e999df
docs: update README badges and skill counts for v1.52.0
daymade May 9, 2026
1549306
feat(statusline-generator): rewrite SKILL.md + scripts for v1.1.0
daymade May 9, 2026
8d07e4a
chore: tunnel-doctor DNS layer, feishu-doc-scraper, cleanup
daymade May 9, 2026
2e02802
feat(gangtise-copilot): default to minimal preset, alias workshop to …
daymade May 11, 2026
1561772
feat(pdf-creator): lock in CJK table contract with regression tests (…
daymade May 13, 2026
36638df
feat(feishu-doc-scraper): SSR fallback + per-doc image naming + known…
daymade May 13, 2026
0442340
feat(pdf-creator): bundle cjk-auto theme to survive skill upgrades (v…
daymade May 13, 2026
d3425cd
chore(skills): batch update — claude-md-progressive-disclosurer v1.3.…
daymade May 17, 2026
bbf87f3
fix(pdf-creator): auto-select Chrome backend for CJK content
daymade May 18, 2026
1710447
fix(dictionary): order corrections by length DESC to prevent short-ru…
daymade May 23, 2026
90c188b
chore(marketplace): unify all 4 suites to suite-only mode (BREAKING)
daymade May 24, 2026
b30125d
docs(transcript-fixer): clarify native correction protocol + fix DB c…
daymade May 30, 2026
5550dd3
docs(skill-creator): AI semantic read-through as the primary sanitiza…
daymade May 30, 2026
c083605
fix(pdf-creator): write self-check previews to temp dir, not next to …
daymade May 30, 2026
32c5e49
docs(network-skills): cross-link the 4 network-diagnosis skills into …
daymade May 30, 2026
e68ad75
feat(benchmark-due-diligence): new skill for adversarial benchmark te…
daymade May 30, 2026
3b3783b
feat(bigdata-skill): 12 structured endpoints + BatchSearch, fix scree…
daymade May 30, 2026
2eb7c4a
fix(bigdata-skill): correct two stale statements in SKILL.md prose
daymade May 30, 2026
83d76d3
fix(bigdata-skill): analyst_ratings + price_target L3 -> L4 (live-tes…
daymade May 30, 2026
f1eab7a
fix(bigdata-skill): fix BatchSearch.upload_input Content-Type 403 (li…
daymade May 30, 2026
0407852
fix(bigdata-skill): connected_entities — drop bogus entity_categories…
daymade May 30, 2026
49391eb
fix(bigdata-skill): sync rest_ext module-docstring table — ratings/ta…
daymade May 30, 2026
caa81e1
refactor(bigdata-skill): rest_ext docstring stops duplicating the end…
daymade May 30, 2026
78dc22b
Release v1.60.0: Add auto-repo-setup skill
daymade May 31, 2026
c09bac3
Merge pull request #75 from daymade/add-auto-repo-setup
daymade May 31, 2026
6ad843a
fix(macos-cleaner): harden deletion safety checks
daymade Jun 4, 2026
020c851
Merge pull request #78 from daymade/codex/issue-70-macos-cleaner-safety
daymade Jun 4, 2026
96b14eb
chore: release v1.60.1
daymade Jun 4, 2026
111fb8d
fix(skills): make tunnel-doctor + benchmark frontmatter strict-YAML v…
daymade Jun 6, 2026
469eb82
feat(daymade-docs): add pdf-creator warm-terra-menu theme + fix front…
daymade Jun 6, 2026
e8074b9
docs(transcript-fixer): add Parallel-via-Dynamic-Workflow subsection …
daymade Jun 6, 2026
5be6ecc
refactor(skills): tighten 13 over-long frontmatter descriptions
daymade Jun 6, 2026
df21d9c
feat(daymade-claude-code): add terminal-screenshot skill
daymade Jun 6, 2026
fbb3d24
Merge remote-tracking branch 'origin/main' into add-auto-repo-setup
daymade Jun 6, 2026
6a2019f
feat(daymade-docs): add pdf-to-html skill
daymade Jun 6, 2026
ff612fd
refactor(skills): consolidate plugin-packaging knowledge into marketp…
daymade Jun 6, 2026
a31a47e
docs(readme): list pdf-to-html in README.md and README.zh-CN.md
daymade Jun 6, 2026
da9796f
docs: backfill skill lists to 61 + align to v1.62.0; add doc-drift guard
daymade Jun 6, 2026
dd59e88
docs: backfill all missing skill sections in README.md + README.zh-CN.md
daymade Jun 6, 2026
53db35d
docs: wire check_doc_skill_lists.py into release SOP + sync CHANGELOG
daymade Jun 6, 2026
49833c3
Update tunnel-doctor v1.6.0 + debugging-network-issues v1.1.0: TUN me…
daymade Jun 6, 2026
bceef54
Merge origin/main: align tunnel-doctor v1.6.0 + debugging-network-iss…
daymade Jun 6, 2026
0f104ea
feat(llm-wiki-setup): add skill directory (interview/templates/script…
daymade Jun 6, 2026
3295c7a
feat(mindmap-markmap-viewer): interactive offline mind maps from Mark…
Jaderson-bit Jun 9, 2026
e1aa10f
mindmap-markmap-viewer: README 'Try it in one line' quickstart
Jaderson-bit Jun 10, 2026
8702ace
mindmap-markmap-viewer: README screenshot of the one-line prompt in a…
Jaderson-bit Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1,153 changes: 575 additions & 578 deletions .claude-plugin/marketplace.json

Large diffs are not rendered by default.

53 changes: 53 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash
# Pre-commit hook: scan staged changes for sensitive data
# Install: git config core.hooksPath .githooks

set -euo pipefail

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo "🔍 Scanning staged changes for sensitive data..."

FAILED=0

# Layer 1: gitleaks (if available)
if command -v gitleaks &>/dev/null; then
if ! gitleaks protect --staged --config .gitleaks.toml --no-banner 2>/dev/null; then
echo -e "${RED}❌ gitleaks found secrets in staged changes${NC}"
FAILED=1
fi
else
echo -e "${YELLOW}⚠ gitleaks not installed (brew install gitleaks), falling back to pattern scan${NC}"
fi

# Layer 2: fast regex scan (always runs, catches what gitleaks config might miss)
STAGED_DIFF=$(git diff --cached --diff-filter=ACDMR)

PATTERNS=(
'/Users/[a-zA-Z][a-zA-Z0-9_-]+/'
'/home/[a-zA-Z][a-zA-Z0-9_-]+/'
'C:\\Users\\[a-zA-Z]'
'songtiansheng'
'tiansheng'
'15366[0-9]+'
)

for pattern in "${PATTERNS[@]}"; do
MATCHES=$(echo "$STAGED_DIFF" | grep -nE "^\+" | grep -E "$pattern" | grep -v "^+++\|\.gitleaks\.toml\|\.githooks/\|\.gitignore\|placeholder\|example\|CLAUDE\.md" || true)
if [ -n "$MATCHES" ]; then
echo -e "${RED}❌ Found sensitive pattern '${pattern}':${NC}"
echo "$MATCHES" | head -5
FAILED=1
fi
done

if [ $FAILED -eq 1 ]; then
echo ""
echo -e "${RED}Commit blocked. Fix the issues above, or use --no-verify to bypass (not recommended).${NC}"
exit 1
fi

echo -e "${GREEN}✅ No sensitive data found in staged changes.${NC}"
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Which skill is affected?

- [ ] skill-creator
- [ ] github-ops
- [ ] markdown-tools
- [ ] doc-to-markdown
- [ ] mermaid-tools
- [ ] statusline-generator
- [ ] teams-channel-post-writer
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Which skill would this enhance?

- [ ] skill-creator
- [ ] github-ops
- [ ] markdown-tools
- [ ] doc-to-markdown
- [ ] mermaid-tools
- [ ] statusline-generator
- [ ] teams-channel-post-writer
Expand Down
6 changes: 3 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Which skills are affected by this PR?

- [ ] skill-creator
- [ ] github-ops
- [ ] markdown-tools
- [ ] doc-to-markdown
- [ ] mermaid-tools
- [ ] statusline-generator
- [ ] teams-channel-post-writer
Expand Down Expand Up @@ -70,8 +70,8 @@ How has this been tested?
- [ ] Scripts are executable (chmod +x)
- [ ] No absolute paths or user-specific information
- [ ] Tested in actual Claude Code session
- [ ] Passed validation: `skill-creator/scripts/quick_validate.py`
- [ ] Successfully packages: `skill-creator/scripts/package_skill.py`
- [ ] Passed validation: `daymade-skill/skill-creator/scripts/quick_validate.py`
- [ ] Successfully packages: `daymade-skill/skill-creator/scripts/package_skill.py`

### For All PRs

Expand Down
190 changes: 190 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
name: Benchmark Tests

on:
schedule:
# Run weekly on Sundays at 2 AM UTC
- cron: '0 2 * * 0'
workflow_dispatch:
inputs:
test_type:
description: 'Test type to run'
required: true
default: 'all'
type: choice
options:
- all
- scrape
- annotation
- full

env:
NODE_VERSION: '20'

jobs:
scrape-benchmark:
name: Scrape Success Rate Benchmark
runs-on: ubuntu-latest
if: github.event.inputs.test_type == 'all' || github.event.inputs.test_type == 'scrape' || github.event.inputs.test_type == 'full'
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: cloud/package-lock.json

- name: Install dependencies
working-directory: cloud
run: npm ci

- name: Install Playwright browsers
working-directory: cloud
run: npx playwright install --with-deps chromium

- name: Run scrape benchmark
working-directory: cloud
env:
JINA_AI_API_KEY: ${{ secrets.JINA_AI_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
run: |
npx vitest run tests/benchmark/scrape-benchmark.ts --reporter=verbose 2>&1 | tee scrape-benchmark.log

- name: Upload benchmark results
uses: actions/upload-artifact@v4
if: always()
with:
name: scrape-benchmark-results
path: |
cloud/tests/benchmark/scrape-benchmark-report.json
cloud/scrape-benchmark.log
retention-days: 30

- name: Check success rate threshold
working-directory: cloud
run: |
if [ -f tests/benchmark/scrape-benchmark-report.json ]; then
SUCCESS_RATE=$(jq -r '.summary.successRate' tests/benchmark/scrape-benchmark-report.json | sed 's/%//')
echo "Success Rate: ${SUCCESS_RATE}%"
if (( $(echo "$SUCCESS_RATE >= 95" | bc -l) )); then
echo "✅ SUCCESS: Meet target of 95%"
exit 0
else
echo "❌ FAILURE: Below target of 95%"
exit 1
fi
else
echo "Report not generated"
exit 1
fi

annotation-benchmark:
name: Annotation Accuracy Benchmark
runs-on: ubuntu-latest
if: github.event.inputs.test_type == 'all' || github.event.inputs.test_type == 'annotation' || github.event.inputs.test_type == 'full'
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: cloud/package-lock.json

- name: Install dependencies
working-directory: cloud
run: npm ci

- name: Run annotation accuracy test
working-directory: cloud
run: |
npx vitest run tests/benchmark/annotation-accuracy.ts --reporter=verbose 2>&1 | tee annotation-accuracy.log

- name: Upload benchmark results
uses: actions/upload-artifact@v4
if: always()
with:
name: annotation-accuracy-results
path: |
cloud/tests/benchmark/annotation-accuracy-report.json
cloud/annotation-accuracy.log
retention-days: 30

- name: Check accuracy threshold
working-directory: cloud
run: |
if [ -f tests/benchmark/annotation-accuracy-report.json ]; then
ACCURACY=$(jq -r '.summary.positionAccuracy' tests/benchmark/annotation-accuracy-report.json | sed 's/%//')
echo "Position Accuracy: ${ACCURACY}%"
if (( $(echo "$ACCURACY >= 98" | bc -l) )); then
echo "✅ SUCCESS: Meet target of 98%"
exit 0
else
echo "❌ FAILURE: Below target of 98%"
exit 1
fi
else
echo "Report not generated"
exit 1
fi

full-benchmark:
name: Full Benchmark Suite
runs-on: ubuntu-latest
if: github.event.inputs.test_type == 'full'
needs: [scrape-benchmark, annotation-benchmark]
timeout-minutes: 90

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download all artifacts
uses: actions/download-artifact@v4

- name: Generate combined report
run: |
echo "# 📊 Full Benchmark Report" > benchmark-report.md
echo "" >> benchmark-report.md
echo "Generated at: $(date -u +"%Y-%m-%d %H:%M:%S UTC")" >> benchmark-report.md
echo "" >> benchmark-report.md

if [ -f scrape-benchmark-results/scrape-benchmark-report.json ]; then
echo "## Scraping Success Rate" >> benchmark-report.md
cat scrape-benchmark-results/scrape-benchmark-report.json | jq -r '.summary | to_entries[] | "- \(.key): \(.value)"' >> benchmark-report.md
echo "" >> benchmark-report.md
fi

if [ -f annotation-accuracy-results/annotation-accuracy-report.json ]; then
echo "## Annotation Accuracy" >> benchmark-report.md
cat annotation-accuracy-results/annotation-accuracy-report.json | jq -r '.summary | to_entries[] | "- \(.key): \(.value)"' >> benchmark-report.md
fi

- name: Upload combined report
uses: actions/upload-artifact@v4
with:
name: full-benchmark-report
path: benchmark-report.md

- name: Create GitHub Issue on failure
if: failure()
uses: actions/github-script@v7
with:
script: |
github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `❌ Benchmark Failed - ${new Date().toISOString().split('T')[0]}`,
body: `Benchmark tests failed. Check the [Actions run](${context.payload.repository.html_url}/actions/runs/${context.runId}) for details.`,
labels: ['benchmark', 'automated']
});
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ Thumbs.db
*.tgz
*.rar
*.7z
*.skill

# Build artifacts
*.o
Expand All @@ -81,3 +82,24 @@ INSTALLATION.md
# Private/commercial skills (moved to claude-code-skills-pro)
seo-expert/
video-creator/
/jsonl-viewer/

# Research output (may contain sensitive data)
deep-research-output/
recovered_deep_research/

# OpenCLI cache
.opencli/

# Eval workspaces (contain test data with personal info)
douban-skill-workspace/
debugging-network-issues-workspace/
.gstack/

# Claude Code local settings
.claude/settings.local.json
.claude/archive/

# Generated artifacts
coverage/
node_modules/
57 changes: 57 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Gitleaks custom rules for claude-code-skills repo
# Catches personal info that shouldn't be in an open source repo

title = "claude-code-skills sensitive data rules"

[extend]
useDefault = true

# Global allowlist: files that are allowed to contain patterns
# (the config file itself, hooks, and contribution guides)
[allowlist]
paths = [
'''\.gitleaks\.toml$''',
'''\.githooks/''',
'''CONTRIBUTING\.md$''',
'''CLAUDE\.md$''',
]
regexes = [
# Douban mobile app's public API key (documented as public, hardcoded for zero-config usage)
'''0dad551ec0f84ed02907ff5c42e8ec70''',
]

[[rules]]
id = "absolute-user-path-macos"
description = "Hardcoded macOS user home directory path"
regex = '''/Users/[a-zA-Z][a-zA-Z0-9_-]+/'''
tags = ["pii", "path"]

[[rules]]
id = "absolute-user-path-linux"
description = "Hardcoded Linux home directory path"
regex = '''/home/[a-zA-Z][a-zA-Z0-9_-]+/'''
tags = ["pii", "path"]

[[rules]]
id = "windows-user-path"
description = "Hardcoded Windows user profile path"
regex = '''C:\\Users\\[a-zA-Z][a-zA-Z0-9_-]+\\'''
tags = ["pii", "path"]

[[rules]]
id = "phone-number-cn"
description = "Chinese mobile phone number"
regex = '''\b1[3-9]\d{9}\b'''
tags = ["pii", "phone"]

[[rules]]
id = "douban-user-id-literal"
description = "Hardcoded Douban user ID"
regex = '''songtiansheng'''
tags = ["pii", "username"]

[[rules]]
id = "email-personal"
description = "Personal email address"
regex = '''[a-zA-Z0-9._%+-]+@(gmail|qq|163|126|outlook|hotmail|yahoo|icloud|foxmail)\.[a-zA-Z]{2,}'''
tags = ["pii", "email"]
4 changes: 4 additions & 0 deletions .pii-path-patterns
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Repo-specific local/generated artifact paths that must never be committed
(^|/)coverage(/|$)
(^|/)node_modules(/|$)
(^|/).*\.db$
Loading