You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a Factory Droid adapter so ponytail works with the same depth as the Claude Code / Codex plugins: always-on rules, intensity levels (lite / full / ultra / off), and the five skills as slash commands.
There is no existing issue or PR for Droid/Factory in this repo. docs/agent-portability.md lists 13+ hosts but not Factory Droid.
Why Droid is a good fit
Factory Droid already supports the same building blocks ponytail uses elsewhere:
hooks/ponytail-runtime.js: detect DROID_PLUGIN_ROOT (and/or Factory-specific env) for state path + writeHookOutput JSON shape for Droid (same as Codex hookSpecificOutput on SessionStart / UserPromptSubmit).
hooks/ponytail-config.js: state file location — today ~/.claude/.ponytail-active; consider ~/.factory/.ponytail-active when running under Droid (or host-agnostic getStateDir()).
droid plugin marketplace add https://github.com/DietrichGebert/ponytail
droid plugin install ponytail@ponytail --scope user # or project
Users must review/trust hooks in /hooks (same as Codex). Requires node on PATH for lifecycle hooks.
Instruction-only fallback (no hooks): copy AGENTS.md + skills/ into project or ~/.factory/ — same as Generic agents row, without lite/full/ultra persistence.
Acceptance criteria
Plugin installs via droid plugin from this repo’s marketplace manifest.
New session injects ponytail rules at default mode (full unless PONYTAIL_DEFAULT_MODE / config).
/ponytail lite|full|ultra|off (or equivalent command) changes mode for the session.
All five skills discoverable; /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-help work.
node scripts/check-rule-copies.js and existing hook tests still pass; add a manifest test for Factory hook paths if the repo already tests other hosts.
Summary
Add a Factory Droid adapter so ponytail works with the same depth as the Claude Code / Codex plugins: always-on rules, intensity levels (
lite/full/ultra/off), and the five skills as slash commands.There is no existing issue or PR for Droid/Factory in this repo.
docs/agent-portability.mdlists 13+ hosts but not Factory Droid.Why Droid is a good fit
Factory Droid already supports the same building blocks ponytail uses elsewhere:
skills/*/SKILL.md~/.factory/skills/or.factory/skills/(skills)AGENTS.md~/.factory/AGENTS.md(AGENTS.md)SessionStart+UserPromptSubmithooks${DROID_PLUGIN_ROOT}instead of${CLAUDE_PLUGIN_ROOT}Droid’s
UserPromptSubmit/SessionStarthooks can injectadditionalContextvia JSON stdout—the same pattern Codex uses inhooks/ponytail-runtime.js.Proposed adapter (keep adapters thin)
Per
docs/agent-portability.md, point the host at existing assets:.factory-plugin/plugin.json(manifest; mirror.claude-plugin/plugin.jsonfields).hooks/hooks.json(orhooks/factory-hooks.jsonif roothooks.jsonmust stay host-specific—see Gemini CLI: Invalid hook event name 'UserPromptSubmit' warning #137 / PR Avoid Gemini loading Claude hook events #139 pattern for Gemini vs Claude/Codex).SessionStart→node "${DROID_PLUGIN_ROOT}/hooks/ponytail-activate.js"UserPromptSubmit→node "${DROID_PLUGIN_ROOT}/hooks/ponytail-mode-tracker.js"skills/— unchanged (plugin bundles or references reposkills/).commands/— optional slash prompts for/ponytail,/ponytail-review, etc. (Droid merges commands into skills slash namespace).docs/agent-portability.md— new row: Factory Droid |.factory-plugin/,skills/,hooks/,AGENTS.md| Plugin install + hooks; instruction-only fallback viaAGENTS.md+ skills copy.Code changes likely needed (small)
hooks/ponytail-runtime.js: detectDROID_PLUGIN_ROOT(and/or Factory-specific env) for state path +writeHookOutputJSON shape for Droid (same as CodexhookSpecificOutputonSessionStart/UserPromptSubmit).hooks/ponytail-config.js: state file location — today~/.claude/.ponytail-active; consider~/.factory/.ponytail-activewhen running under Droid (or host-agnosticgetStateDir()).ponytail-mode-tracker.js, use standaloneisDeactivationCommandso prompts like “add a normal mode toggle” do not silently disable ponytail on Droid too.Install UX (document in README)
droid plugin marketplace add https://github.com/DietrichGebert/ponytail droid plugin install ponytail@ponytail --scope user # or projectUsers must review/trust hooks in
/hooks(same as Codex). Requiresnodeon PATH for lifecycle hooks.Instruction-only fallback (no hooks): copy
AGENTS.md+skills/into project or~/.factory/— same as Generic agents row, withoutlite/full/ultrapersistence.Acceptance criteria
droid pluginfrom this repo’s marketplace manifest.fullunlessPONYTAIL_DEFAULT_MODE/ config)./ponytail lite|full|ultra|off(or equivalent command) changes mode for the session./ponytail-review,/ponytail-audit,/ponytail-debt,/ponytail-helpwork.node scripts/check-rule-copies.jsand existing hook tests still pass; add a manifest test for Factory hook paths if the repo already tests other hosts.docs/agent-portability.mdupdated; README install section mentions Droid.References
docs/agent-portability.mdUserPromptSubmit(Gemini CLI: Invalid hook event name 'UserPromptSubmit' warning #137), Copilot CLI plugin namespaceHappy to help test a PR on Linux with
droidCLI if useful.