Skip to content

Add personality tone control plugin#313

Draft
nhicks00 wants to merge 2 commits intompfaffenberger:mainfrom
nhicks00:persona-tone-control
Draft

Add personality tone control plugin#313
nhicks00 wants to merge 2 commits intompfaffenberger:mainfrom
nhicks00:persona-tone-control

Conversation

@nhicks00
Copy link
Copy Markdown
Collaborator

Summary

  • Adds a built-in personality_tone plugin that controls Code Puppy's response style without editing the core prompt directly.
  • Adds /tone for quick switching between professional, neutral, default, and playful tones.
  • Persists the selected tone in config via personality_tone and reloads the active agent so the updated prompt applies immediately.

Why

Code Puppy's default prompt is intentionally playful and sassy, which is useful for some users but too informal for others. This keeps the existing default behavior intact while giving users a lightweight way to opt into a dry, business-professional style when they want focused engineering work.

Usage

  • /tone or /tone show: display the current tone and available options.
  • /tone professional: dry, direct, business-professional responses.
  • /tone neutral: friendly but restrained responses.
  • /tone default: native Code Puppy personality with no override.
  • /tone playful: explicitly playful while staying task-focused.
  • Numeric aliases are supported: /tone 0, /tone 1, /tone 2, /tone 3.

Implementation Notes

  • Implemented as a plugin under code_puppy/plugins/personality_tone/.
  • Uses the existing load_prompt hook to append a tone override, so core prompt text is not rewritten.
  • Uses the existing custom_command and custom_command_help hooks for /tone and help-menu integration.
  • Defaults to default, so existing users see no behavior change unless they opt in.

Validation

  • uv run pytest --no-cov tests/plugins/test_personality_tone.py tests/plugins/test_plugins_init_coverage.py -q
  • uv run ruff check code_puppy/plugins/personality_tone tests/plugins/test_personality_tone.py

Note: I also attempted the broader command-handler coverage suite, but this local environment fails during import before reaching this feature because pydantic_ai.mcp cannot import the optional mcp.client.sse path.

@mpfaffenberger
Copy link
Copy Markdown
Owner

quality checks plz - I added a note in AGENTS.md

@nhicks00 nhicks00 force-pushed the persona-tone-control branch from 61c0fcc to f889ad0 Compare May 2, 2026 22:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants