{"id":50609464,"url":"https://github.com/devseunggwan/praxis","last_synced_at":"2026-06-06T02:02:52.434Z","repository":{"id":334380564,"uuid":"1128732051","full_name":"devseunggwan/praxis","owner":"devseunggwan","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-02T07:32:00.000Z","size":2066,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T09:19:57.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/devseunggwan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-06T04:32:36.000Z","updated_at":"2026-06-02T07:32:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e6a2480-4f38-4efe-a4ff-3c825bb592c7","html_url":"https://github.com/devseunggwan/praxis","commit_stats":null,"previous_names":["devseunggwan/skills","devseunggwan/my-skills"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devseunggwan/praxis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devseunggwan%2Fpraxis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devseunggwan%2Fpraxis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devseunggwan%2Fpraxis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devseunggwan%2Fpraxis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devseunggwan","download_url":"https://codeload.github.com/devseunggwan/praxis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devseunggwan%2Fpraxis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33966639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-06T02:02:51.059Z","updated_at":"2026-06-06T02:02:52.415Z","avatar_url":"https://github.com/devseunggwan.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Praxis\n\nDevelopment workflow skills for Claude Code — disciplined, fast, resilient.\n\n\u003e **Note:** Skills may be added, removed, or restructured at any time without prior notice. This is a personal toolbox — not a stable API.\n\n## Skills\n\n\u003e **Invocation**: praxis entries are *skills*, not subagents. Always call them\n\u003e via `Skill(skill=\"praxis:\u003cname\u003e\")`. `Agent(subagent_type=\"praxis:\u003cname\u003e\")`\n\u003e returns `Agent type not found` — Agent and Skill resolve disjoint namespaces.\n\u003e See [RUNTIME_CONSTRAINTS.md §3](RUNTIME_CONSTRAINTS.md) for the mapping table.\n\n### Discovery\n\n| Skill | Trigger keywords | When to use | Example invocation |\n|-------|-----------------|-------------|-------------------|\n| `using-praxis` | `praxis 처음`, `praxis 사용법`, `어떤 skill 부터`, `praxis intro`, `praxis getting started` | 처음 praxis를 접하거나 상황에 맞는 skill을 모를 때 | `/praxis:using-praxis` |\n| `writing-praxis-skill` | `new skill`, `write skill`, `add skill`, `skill template`, `skill spec`, `스킬 작성`, `새 스킬` | 새 SKILL.md를 작성하거나 skill 구조 가이드가 필요할 때 | `/praxis:writing-praxis-skill` |\n\n### Development\n\n| Skill | Trigger keywords | When to use | Example invocation |\n|-------|-----------------|-------------|-------------------|\n| `retrospect` | `retrospect`, `what went wrong`, `session review`, `session improvement`, `improve` | 세션 마무리 후 마찰 패턴·근본 원인을 분석하고 개선안을 실행할 때 | `/praxis:retrospect` |\n| `codex-review-wrap` | `codex review`, `review codex`, `safe review`, `premise verification`, `flip detection`, `sibling cross-check` | 다중 worktree 환경에서 `/codex:review`를 전제 검증·flip 탐지와 함께 안전하게 실행할 때 | `/praxis:codex-review-wrap` |\n\n### Discipline\n\n| Skill | Trigger keywords | When to use | Example invocation |\n|-------|-----------------|-------------|-------------------|\n| `strike` | `/strike`, `/praxis:strike`, `strike 1/2/3`, `삼진` | 규칙 위반 발생 시 명시적으로 기록할 때 (colloquial \"strike a balance\" 등은 제외) | `/praxis:strike \u003c위반 이유\u003e` |\n| `strikes` | `/strikes`, `strike status`, `몇 진`, `check strikes` | 현재 세션의 strike 횟수와 위반 내역을 확인할 때 | `/praxis:strikes` |\n| `reset-strikes` | `/reset-strikes`, `strike 초기화`, `clear strikes` | 3진 블록 후 카운터를 초기화해 응답을 재개할 때 | `/praxis:reset-strikes` |\n\n### Session Management\n\n| Skill | Trigger keywords | When to use | Example invocation |\n|-------|-----------------|-------------|-------------------|\n| `recover-sessions` | `recover`, `session recovery`, `restore sessions`, `power recovery` | 전원 차단·tmux 크래시 후 세션을 복구할 때 (tmux 백엔드) | `/praxis:recover-sessions` |\n| `cmux-recover-sessions` | `터졌다`, `크래시 복구`, `OOM 복구`, `세션 살려야`, `crash recovery`, `power loss recovery`, `cmux session recovery` | crash·power loss·OOM 후 cmux 세션 다수를 긴급 복구할 때 (`.jsonl` 스캔 기반) | `/praxis:cmux-recover-sessions` |\n| `cmux-save-sessions` | `save sessions`, `session save`, `session snapshot`, `cmux save`, `snapshot list` | 현재 cmux 세션 목록을 JSON으로 저장해 나중에 복원할 때 | `/praxis:cmux-save-sessions` |\n| `cmux-resume-sessions` | `resume sessions`, `restore from snapshot`, `rehydrate sessions`, `세션 복원`, `스냅샷 복원` | 이전에 저장한 스냅샷으로 워크스페이스를 복원할 때 (크래시 복구는 `cmux-recover-sessions`) | `/praxis:cmux-resume-sessions` |\n| `cmux-session-manager` | `cmux session`, `session management`, `session cleanup`, `cmux status`, `cmux tidy` | 일상적인 세션 정리·상태 대시보드가 필요할 때 | `/praxis:cmux-session-manager` |\n| `cmux-delegate` | `delegate`, `cmux delegate`, `new session` | 현재 작업의 맥락을 보존한 채 독립 세션에 위임할 때 (리뷰·디버깅·구현 분리) | `/praxis:cmux-delegate` |\n| `cmux-browser` | `cmux browser`, `cmux 브라우저` | cmux browser CLI로 SPA hydration 대기 포함 E2E 테스트를 실행할 때 | `/praxis:cmux-browser` |\n\n## Hooks\n\nPraxis ships a set of PreToolUse / PostToolUse / Stop / UserPromptSubmit hooks\nthat structurally enforce rules captured in CLAUDE.md (e.g. side-effect\nacknowledgment, completion-evidence requirement, protected-branch edit guard,\nmanufactured action-menu detection). Hooks fail-open on infrastructure errors\nand never break Claude Code — they only nudge or block specific patterns.\n\nSee [ARCHITECTURE.md → Hook index](ARCHITECTURE.md#hook-index) for the full\nlist and per-hook spec links (specs live at `hooks/\u003crole\u003e/\u003cname\u003e/spec.md`;\nthe [`docs/hook/INDEX.md`](docs/hook/INDEX.md) index links to them), and\n[DESIGN.md → Hook Design Contracts](DESIGN.md#hook-design-contracts) for the\nshared design contracts every hook follows.\n\n## Prerequisites\n\nMost skills delegate to external agents or session managers. Install the dependencies that match your usage tier.\n\n| Dependency | Required for | Install |\n|------------|-------------|---------|\n| **gh CLI** | Standalone (`recover-sessions`), strike skills, PR/issue ops | `brew install gh` |\n| **jq** | Strike skills (session-scoped counter parsing) | `brew install jq` |\n| **oh-my-claudecode** | Agent delegation (tracer, analyst, ultraqa, code-reviewer) | `omc install` |\n| **cmux** | Session management skills (cmux-*) | Mac app installer |\n| **codex-cli, gemini-cli** | Multi-provider routing in `cmux-delegate` | per upstream docs |\n\n### Compatibility Tiers\n\n| Tier | What works | What you need |\n|------|-----------|---------------|\n| **Standalone** | recover-sessions, strike / strikes / reset-strikes | `gh` CLI, `jq` |\n| **Enhanced** | + retrospect, codex-review-wrap | + oh-my-claudecode |\n| **Full** | + all cmux-* skills | + cmux |\n| **Multi-provider** | + codex/gemini routing in cmux-delegate | + codex-cli, gemini-cli |\n\n\u003e Skills in higher tiers fall back to manual/built-in alternatives when their dependencies are missing, but with reduced functionality.\n\n## Provider Routing\n\nSkills that dispatch external CLI workers (`cmux-delegate`) can route tasks\nto multiple AI providers via a unified `--model` flag using\n`\u003cprovider\u003e:\u003cmodel\u003e` notation (e.g. `claude:opus`, `codex:o3`,\n`gemini:flash`). Bare names (`opus`, `sonnet`, `haiku`) always resolve to\nClaude — full backward compatibility. When only `claude` is installed,\nthe system behaves exactly as before — no errors, no degradation.\n\nSee [ARCHITECTURE.md → Provider Routing](ARCHITECTURE.md#provider-routing) for\nthe full task-type / complexity routing matrix and fallback policy.\n\n## Installation\n\nPraxis ships a single runtime (`skills/`, `hooks/`, `scripts/`) with\nplatform-specific packaging adapters generated from a canonical source in\n`manifests/`. Three install surfaces are supported.\n\n### Claude Code — plugin (recommended)\n\n```bash\n/plugin marketplace add https://github.com/devseunggwan/praxis\n/plugin install praxis\n```\n\nClaude Code reads `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`\ndirectly from the repo root.\n\n### Codex — marketplace + plugin\n\n```bash\n# Register the local marketplace (points at this repo's .agents/plugins/marketplace.json)\ncodex marketplace add https://github.com/devseunggwan/praxis\ncodex plugin install praxis\n```\n\nCodex reads `.agents/plugins/marketplace.json` as the marketplace root and\n`plugins/praxis/.codex-plugin/plugin.json` as the plugin root. The `skills/`,\n`hooks/`, and `scripts/` directories inside `plugins/praxis/` are symlinks\ninto the repo-root runtime — there is no source duplication.\n\n### Direct skill install (fallback)\n\nWhen the plugin surface isn't available:\n\n```bash\ngit clone https://github.com/devseunggwan/praxis.git ~/projects/praxis\nclaude skill add ~/projects/praxis/skills/\u003cskill-name\u003e\n```\n\n## Packaging internals\n\nPlatform manifests are generated, not hand-edited. The canonical source is\n`manifests/plugin.base.json` (common metadata) plus one file per platform\nunder `manifests/platforms/`.\n\n```bash\n# Regenerate every platform manifest + adapter shell symlinks\n./scripts/build-plugin-manifests.py\n\n# Verify committed manifests match the canonical source (CI / pre-merge)\n./scripts/check-plugin-manifests.py\n```\n\nGenerated artifacts are committed:\n\n- `.claude-plugin/plugin.json`\n- `.claude-plugin/marketplace.json`\n- `.agents/plugins/marketplace.json`\n- `plugins/praxis/.codex-plugin/plugin.json`\n- `plugins/praxis/{skills,hooks,scripts}` (symlinks into repo root)\n\nTo add a new platform, drop a `manifests/platforms/\u003cname\u003e.json` file listing\nits outputs and run the build script — no changes to skills, hooks, or\nexisting platforms required.\n\n## Local Development\n\nThis repository should live at **`~/projects/praxis`**. CLI tools shipped by\nskills (e.g. `cmux-recover-sessions`, `claude-recover`, `cmux-save-sessions`,\n`cmux-browser`) are symlinked from `~/.local/bin` into this clone, so patches\nyou commit here land in the version that actually runs at the shell.\n\n```bash\n# Install / refresh CLI symlinks (idempotent)\n./scripts/install.sh\n\n# Verify symlinks point at this clone (CI / SessionStart hook)\n./scripts/verify-symlinks.sh\n```\n\nSee [AGENTS.md → Local Development](AGENTS.md#local-development) for the full\nlist of shipped CLI wrappers and drift-recovery rationale.\n\n## Security \u0026 Privacy\n\n- [SECURITY.md](SECURITY.md) — vulnerability reporting and supported versions\n- [PRIVACY.md](PRIVACY.md) — what praxis reads, executes, and never transmits\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevseunggwan%2Fpraxis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevseunggwan%2Fpraxis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevseunggwan%2Fpraxis/lists"}