{"id":44534715,"url":"https://github.com/flexion/claude-domestique","last_synced_at":"2026-02-13T18:44:39.053Z","repository":{"id":329749132,"uuid":"1097581932","full_name":"flexion/claude-domestique","owner":"flexion","description":"Claude Code plugin for strategic session workflow management - like a cycling domestique for your development process","archived":false,"fork":false,"pushed_at":"2026-01-27T20:59:16.000Z","size":850,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-28T07:43:56.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flexion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-11-16T13:08:36.000Z","updated_at":"2026-01-27T20:59:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flexion/claude-domestique","commit_stats":null,"previous_names":["flexion/claude-domestique"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flexion/claude-domestique","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexion%2Fclaude-domestique","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexion%2Fclaude-domestique/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexion%2Fclaude-domestique/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexion%2Fclaude-domestique/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flexion","download_url":"https://codeload.github.com/flexion/claude-domestique/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexion%2Fclaude-domestique/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29414282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2026-02-13T18:44:37.206Z","updated_at":"2026-02-13T18:44:39.038Z","avatar_url":"https://github.com/flexion.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Domestique\n\n**Your strategic coding partner.**\n\nLike a cycling domestique, it carries the water, stays focused on your goals, and handles the unglamorous work you don't want to do.\n\n---\n\n## The Plugins\n\n### [memento](./memento) — Session Persistence\n\n\u003e \"Remember Sammy Jankis.\"\n\nLike Leonard in *Memento*, Claude can't form long-term memories. Context window fills up, conversation resets, everything vanishes. **memento** gives Claude its tattoos—session files that persist decisions, progress, and context across resets.\n\nHelps developers embody Flexion fundamentals across conversation boundaries:\n- **Lead by example** — Persists decisions and progress so nothing is lost to \"fixed bug\" amnesia\n- **Empower customers to adapt** — Enables team handoffs with full context of what was done and why\n- **Design as you go** — Captures evolving understanding as key details emerge during work\n\n### [mantra](./mantra) — Behavioral Rules\n\n\u003e \"I told you. You agreed. You forgot. Repeat.\"\n\nYou've written the perfect CLAUDE.md. Claude reads it. Claude agrees. By turn 47, Claude ignores half of it. **mantra** provides curated behavioral rules that are automatically loaded via Claude Code's native `.claude/rules/` mechanism—ensuring consistent behavior from turn 1 to turn 100.\n\nHelps developers embody Flexion fundamentals throughout long sessions:\n- **Be skeptical and curious** — Keeps Claude questioning assumptions and seeking evidence, not pattern-matching\n- **Never compromise on quality** — Maintains consistent standards from turn 1 to turn 100\n- **Listen with humility** — Enforces peer-not-subordinate stance, deferring to evidence over agreement\n\n### [onus](./onus) — Work-Item Automation\n\n\u003e \"The burden is mine now.\"\n\nJIRA tickets, Azure DevOps work items, commit messages, PR descriptions. The awful-but-important work that kills your flow. **onus** handles the project management bureaucracy so you can code.\n\nSupports **GitHub Issues** (default, zero-config), **JIRA**, and **Azure DevOps** work items.\n\nHelps developers embody Flexion fundamentals while staying in flow:\n- **Never compromise on quality** — Ensures proper commit messages, ticket updates, and PR descriptions\n- **Lead by example** — Handles PM accountability work so it actually gets done\n- **Empower customers to adapt** — Keeps stakeholders informed via trackers without breaking developer focus\n\n---\n\n## How They Work Together\n\n```\nExternal (GitHub/JIRA/Azure DevOps)\n        │\n        ▼ fetch issue details\n    [onus]\n        │\n        ▼ populate session file\n    [memento] ←── \"What's next?\" lookup\n        │\n        ▼ read session context\n    [mantra] ──► native rules auto-loaded\n```\n\nEach plugin works standalone but gains enhanced behavior when used together.\n\n![All three plugins working together](images/plugins-in-action.png)\n\n*Session resumption showing mantra (context refresh counter), onus (issue tracking), and memento (session file) working together. Claude reads the session file and picks up exactly where the previous conversation left off.*\n\n---\n\n## Requirements\n\n### Required\n\n| Tool | Version | Used By | Purpose |\n|------|---------|---------|---------|\n| [Claude Code](https://claude.ai/code) | 2.0.12+ | All | Plugin host (plugin system introduced in v2.0.12) |\n| [Node.js](https://nodejs.org/) | 18+ | All | Runtime for hooks and scripts |\n| [git](https://git-scm.com/) | 2.x | All | Branch detection, commits, session tracking |\n\n### Platform-Specific (onus)\n\nWhen using `/onus:fetch`, Claude will use these tools to retrieve work items:\n\n| Tool | Platform | Purpose |\n|------|----------|---------|\n| [GitHub CLI (gh)](https://cli.github.com/) | GitHub | Fetch issues, create PRs (recommended) |\n| Claude's WebFetch | JIRA, Azure DevOps | Built-in HTTP tool for API calls |\n\n\u003e **Note**: For JIRA/Azure DevOps, Claude uses its built-in WebFetch capability. No additional tools required.\n\n### Environment Variables (for onus)\n\n| Variable | Platform | How to Get |\n|----------|----------|------------|\n| `GITHUB_TOKEN` | GitHub | [Create PAT](https://github.com/settings/tokens) with `repo` scope |\n| `JIRA_TOKEN` | JIRA | `echo -n \"email:api_token\" \\| base64` ([Get API token](https://id.atlassian.com/manage-profile/security/api-tokens)) |\n| `AZURE_DEVOPS_TOKEN` | Azure DevOps | `echo -n \":pat\" \\| base64` ([Create PAT](https://dev.azure.com/_usersSettings/tokens) with Work Items Read) |\n\n### Verification\n\n```bash\n# Check required tools\ngit --version          # git version 2.x\nnode --version         # v18.x or higher\nclaude --version       # Claude Code 2.x\n\n# Check GitHub CLI (optional, for onus with GitHub)\ngh --version           # gh version 2.x\ngh auth status         # Verify authentication\n```\n\n---\n\n## Installation\n\n### Add the Marketplace\n\n```bash\n/plugin marketplace add flexion/claude-domestique\n```\n\n### Install Plugins\n\n```bash\n# Install all three\n/plugin install memento@claude-domestique\n/plugin install mantra@claude-domestique\n/plugin install onus@claude-domestique\n\n# Or just the ones you need\n/plugin install mantra@claude-domestique\n```\n\nThat's it. No initialization required—all plugins use hook-based injection that works automatically.\n\n---\n\n## How Context Injection Works\n\nAll three plugins use Claude Code's hook system for zero-config context injection:\n\n| Hook | When | What Gets Injected |\n|------|------|-------------------|\n| **SessionStart** | New conversation | Full context: rules, session file, work item details |\n| **UserPromptSubmit** | Every prompt | Status line + periodic refresh (every 10 prompts) |\n\nThis means:\n- **mantra** injects behavioral rules automatically—no copying files to `.claude/rules/`\n- **memento** creates session files on first prompt for feature branches\n- **onus** detects issue numbers from branch names and injects work item context\n\n### Status Line\n\nEach prompt shows plugin status:\n```\n📍 Mantra: #3 ✓ | 📂 Memento: session.md | 📋 Onus: #42\n```\n\n---\n\n## Commands\n\n| Plugin | Command | Description |\n|--------|---------|-------------|\n| memento | `/memento:start` | Start new work - creates branch and session together |\n| memento | `/memento:session` | Show current session status or create new session |\n| mantra | `/mantra:make-rule` | Create compact frontmatter rule from verbose markdown |\n| onus | `/onus:init` | Initialize project config (detects commit patterns) |\n| onus | `/onus:fetch` | Fetch issue details from tracker |\n| onus | `/onus:create` | Create new work item |\n| onus | `/onus:update` | Update work item (comment, status, fields) |\n| onus | `/onus:close` | Close a work item |\n| onus | `/onus:commit` | Create a commit with validation and format guidance |\n| onus | `/onus:pr` | Create a pull request with validation and format guidance |\n\n---\n\n## Development\n\n### Version Management\n\nBump plugin versions consistently across all config files:\n\n```bash\nnode scripts/bump-version.js \u003cplugin\u003e \u003cpatch|minor|major\u003e\n\n# Examples:\nnode scripts/bump-version.js memento patch   # 0.1.10 → 0.1.11\nnode scripts/bump-version.js mantra minor    # 0.1.5 → 0.2.0\n```\n\nThis updates `package.json`, `plugin.json`, and `marketplace.json` atomically.\n\n### Testing\n\nEach plugin has its own test suite:\n\n```bash\ncd mantra \u0026\u0026 npm test   # Jest\ncd memento \u0026\u0026 npm test  # Node test runner\ncd onus \u0026\u0026 npm test     # Jest\n```\n\n---\n\n## Shared Conventions\n\nAll plugins agree on this mapping:\n\n```\nIssue #42 (tracker)\n    ↓\nBranch: issue/feature-42/description\n    ↓\nMetadata: .claude/branches/issue-feature-42-description\n    ↓\nSession: .claude/sessions/issue-feature-42-description.md\n```\n\n---\n\n## Rules System\n\nmantra injects behavioral rules via hooks—no file copying required. Rules are frontmatter-only markdown files with compact YAML, injected directly into Claude's context.\n\n### What mantra Provides\n\nOn every session start, mantra injects:\n\n| Rule | Purpose |\n|------|---------|\n| `behavior.md` | AI behavior (skeptical-first, evidence-based) |\n| `context-format.md` | Context module format spec |\n| `format-guide.md` | Compact YAML conventions |\n| `test.md` | Testing conventions (TDD workflow) |\n| `git.md` | Git workflow (commits, PRs, branches) |\n| `sessions.md` | Session management conventions |\n| `work-items.md` | Work item integration |\n\nRules from sibling plugins (memento, onus) are automatically included when installed together.\n\n### Creating Custom Rules\n\nUse `/mantra:make-rule` to create your own rules:\n\n1. Write a verbose, human-readable markdown file\n2. Run `/mantra:make-rule your-guide.md`\n3. Claude converts it to token-efficient frontmatter\n4. Identify which rules are CRITICAL (used sparingly)\n5. Save to `.claude/rules/your-rule.md`\n\n### Rule File Format\n\nEach rule file is a **frontmatter-only markdown file**:\n\n```markdown\n---\n# Project conventions - Compact Reference\ncompanion: project-guide.md\n\n## Git Workflow\nbranch: WorkItemID-desc | chore/desc\ncommit: \"WorkItemID - verb desc\" (HEREDOC format)\ntest-before: ./gradlew test\n\n## Testing\npyramid: unit \u003e integration \u003e e2e\nrun-before-commit: unit-tests\nrun-before-PR: integration-tests\n---\n```\n\nNo markdown body—just frontmatter containing compact YAML.\n\n### Emphasis Markers\n\nUse sparingly for critical rules:\n\n| Marker | Use When |\n|--------|----------|\n| `MANDATORY-REREAD:` | Must re-read before specific actions |\n| `## SECTION (BLOCKING REQUIREMENT)` | Entire section is non-negotiable |\n| `required-before:` | Must happen before an action |\n| `never:` | Absolute prohibitions |\n| `enforcement:` | If→then trigger rules |\n\n### File Format\n\nRules use compact YAML optimized for Claude:\n\n| Pattern | Meaning | Example |\n|---------|---------|---------|\n| `→` | Flow/sequence | `implement → test → commit` |\n| `\u003e` | Priority | `unit \u003e integration \u003e e2e` |\n| `\\|` | Alternatives | `issue/feature-N/desc \\| chore/desc` |\n| `:` | Key-value | `language: typescript` |\n\nKeep files compact: 10-30 lines, no prose, one fact per line.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexion%2Fclaude-domestique","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflexion%2Fclaude-domestique","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexion%2Fclaude-domestique/lists"}