{"id":48085203,"url":"https://github.com/TheStack-ai/pulser","last_synced_at":"2026-04-20T01:00:46.521Z","repository":{"id":345424307,"uuid":"1185070170","full_name":"TheStack-ai/pulser","owner":"TheStack-ai","description":"SKILL.md linter for Claude Code — diagnose, classify, prescribe, and auto-fix skills against Anthropic best practices","archived":false,"fork":false,"pushed_at":"2026-04-02T08:11:21.000Z","size":187,"stargazers_count":9,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T14:41:57.972Z","etag":null,"topics":["anthropic","claude-code","claude-code-skills","cli","code-quality","developer-tools","github-action","linter","npm","npx","skill-linter","skillmd","skills","static-analysis","typescript"],"latest_commit_sha":null,"homepage":"https://whynowlab.github.io/pulser/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheStack-ai.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-18T07:56:30.000Z","updated_at":"2026-04-02T09:24:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TheStack-ai/pulser","commit_stats":null,"previous_names":["whynowlab/pulser","thestack-ai/pulser"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/TheStack-ai/pulser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheStack-ai%2Fpulser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheStack-ai%2Fpulser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheStack-ai%2Fpulser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheStack-ai%2Fpulser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheStack-ai","download_url":"https://codeload.github.com/TheStack-ai/pulser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheStack-ai%2Fpulser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32028547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"ssl_error","status_checked_at":"2026-04-20T00:17:31.068Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude-code","claude-code-skills","cli","code-quality","developer-tools","github-action","linter","npm","npx","skill-linter","skillmd","skills","static-analysis","typescript"],"created_at":"2026-04-04T15:14:13.314Z","updated_at":"2026-04-20T01:00:46.516Z","avatar_url":"https://github.com/TheStack-ai.png","language":"TypeScript","readme":"# pulser\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/banner.svg\" alt=\"pulser — Diagnose. Prescribe. Fix.\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/TheStack-ai/pulser/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/TheStack-ai/pulser/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/pulser-cli\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/pulser-cli?color=10b981\" alt=\"npm\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/pulser-cli\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/pulser-cli?color=06b6d4\" alt=\"downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/TheStack-ai/pulser/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/TheStack-ai/pulser\" alt=\"license\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/TheStack-ai/pulser\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/TheStack-ai/pulser?style=social\" alt=\"stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rohitg00/awesome-claude-code-toolkit\"\u003e\u003cimg src=\"https://awesome.re/mentioned-badge.svg\" alt=\"Mentioned in Awesome Claude Code Toolkit\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/marketplace/actions/pulser-claude-code-skill-linter\"\u003e\u003cimg src=\"https://img.shields.io/badge/Marketplace-Pulser-10b981?logo=github\" alt=\"GitHub Marketplace\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n'스킬 점검해줘' 한 마디. Claude Code 대화 안에서 진단, 분류, 처방, 수정까지 끝납니다.\n\n```\n$ pulser\n\n  pulser v0.4.0\n\n  54 skills scanned · Score: 89/100\n  ✓ 48 healthy  ⚠ 4 warnings  ✗ 2 errors\n\n  Top issues:\n    cardnews    — No Gotchas, no allowed-tools\n    geo-audit   — 338 lines, single file\n\n  💊 Rx #1 — cardnews\n  [GOTCHAS] Add Gotchas section\n    Why: Anthropic's highest-ROI improvement\n    Template:\n      ## Gotchas\n      1. Validate output against conventions\n      2. Check scope — don't over-generate\n\n  Fix type: AUTO\n```\n\n## 뭘 하는 도구인가요\n\npulser는 SKILL.md 파일을 Anthropic이 공개한 [\"Building Claude Code: How We Use Skills\"](https://code.claude.com/docs/en/skills) 원칙 기반 8가지 규칙으로 진단합니다.\n\n| 규칙 | 검사 내용 |\n|------|----------|\n| `frontmatter` | name, description 필드 존재 여부 |\n| `description` | 트리거 키워드, \"Use when\" 패턴, 길이 |\n| `file-size` | SKILL.md 500줄 이하 |\n| `gotchas` | Gotchas 섹션과 실패 패턴 |\n| `allowed-tools` | 스킬 유형에 맞는 도구 제한 |\n| `structure` | 대형 스킬의 보조 파일 분리 |\n| `conflicts` | 스킬 간 트리거 키워드 충돌 |\n| `usage-hooks` | 스킬 사용 로깅 훅 설치 여부 |\n\n각 스킬은 유형별(분석, 리서치, 생성, 실행, 레퍼런스)로 자동 분류되고, 처방은 유형에 맞게 제공됩니다.\n\n## 설치\n\n```bash\nnpm install -g pulser-cli\n```\n\n설치하면 Claude Code 스킬로 자동 등록됩니다. \"스킬 점검해줘\" 또는 `/pulser`로 바로 실행할 수 있습니다.\n\n## 사용법\n\n### Claude Code 대화에서\n\n그냥 말하면 됩니다:\n\n```\n스킬 점검해줘\n```\n\n슬래시 명령도 됩니다:\n\n```\n/pulser\n```\n\nClaude가 진단 결과를 요약하고, 문제를 수정할지 물어봅니다. 대화 안에서 전부 끝납니다.\n\n### 터미널에서\n\n```bash\n# 기본 경로 스캔 (~/.claude/skills/)\npulser\n\n# 특정 디렉토리 스캔\npulser ./my-skills/\n\n# 단일 스킬 스캔\npulser --skill reasoning-tracer\n\n# 자동 수정 (백업 포함)\npulser --fix\n\n# 마지막 수정 롤백\npulser undo\n\n# JSON 출력 (CI/자동화용)\npulser --format json\n\n# 마크다운 리포트\npulser --format md\n\n# 경고를 에러로 처리\npulser --strict\n\n# TUI 애니메이션 끄기\npulser --no-anim\n```\n\n## Eval — 스킬 테스트\n\nv0.4.0 신규: 스킬을 실제 입력으로 테스트합니다.\n\n```bash\npulser eval\n```\n\n`SKILL.md` 옆에 `eval.yaml`을 작성하세요:\n\n```yaml\ntests:\n  - name: \"버그 감지\"\n    input: \"Review: function add(a,b) { return a - b }\"\n    assert:\n      - contains: \"subtract\"\n      - min-length: 30\n```\n\npulser가 `claude -p`로 각 테스트를 실행하고, assertion을 체크하고, 회귀를 자동 추적합니다.\n\n```\n$ pulser eval\n\n  reviewer (2 tests)\n    ✓ 버그 감지            320ms\n    ✓ 정상 코드 통과        280ms\n\n  2 passed · 0 failed · 0.6s\n```\n\n지원 assertions: `contains`, `not-contains`, `min-length`, `max-length`, `matches` (정규식).\n\n### 종료 코드 (eval)\n\n| 코드 | 의미 |\n|------|------|\n| `0` | 전체 통과 |\n| `1` | 실패 있음 |\n| `3` | 회귀 감지 (이전에 통과하던 테스트가 실패) |\n\n## 핵심 파이프라인\n\n1. 진단 — 8가지 규칙으로 문제를 찾고 분류\n2. 처방 — 왜 문제인지 설명하고, 바로 쓸 수 있는 템플릿 제시\n3. 수정 — 안전한 구조 수정을 자동 적용 (전체 백업)\n4. 테스트 — 실제 입력으로 스킬을 실행하고, 회귀 추적\n5. 롤백 — 언제든 이전 상태로 되돌리는 안전망\n\n## 종료 코드\n\n| 코드 | 의미 |\n|------|------|\n| `0` | 모든 규칙 통과 |\n| `1` | 에러 발견 |\n| `2` | 경고 발견 (`--strict` 사용 시) |\n\n## 환자 모니터 TUI\n\nTTY 터미널에서 실행하면 병원 환자 모니터 스타일의 실시간 파형 애니메이션이 표시됩니다:\n\n- 녹색 ECG — 스킬 스캔 진행\n- 녹색 카프노그래피 — pass/warn/fail 카운트\n- 시안 맥박산소측정 — 건강 점수\n- 노란 호흡 — 처방 수\n\n`--no-anim` 또는 파이프 출력으로 비활성화.\n\n## 라이선스\n\nMIT — [TheStack-ai](https://github.com/TheStack-ai)\n\n## 등재 현황\n\n- [GitHub Marketplace — Pulser Action](https://github.com/marketplace/actions/pulser-claude-code-skill-linter)\n- [Awesome Claude Code Toolkit](https://github.com/rohitg00/awesome-claude-code-toolkit)\n- [Anthropic Plugin Directory](https://platform.claude.com) *(심사 중)*\n","funding_links":[],"categories":["Plugins"],"sub_categories":["All Plugins"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheStack-ai%2Fpulser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheStack-ai%2Fpulser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheStack-ai%2Fpulser/lists"}