Skip to main content

Agent profile switcher for USER.md, SOUL.md, and AGENTS.md persona sets.

Project description

dprofile

Agent Profile Switcher for USER.md, SOUL.md, and AGENTS.md persona sets.

dprofile is built for Agents, not just humans. It gives an Agent a safe, deterministic way to switch a target Agent configuration directory to a predefined profile.

The profile library lives in this project. The target directory is provided by the Agent at runtime.

Why

Modern Agent workflows need more than a temporary prompt. A useful Agent profile usually has three separate layers:

  • USER.md: who the Agent is helping, including background, preferences, and constraints.
  • SOUL.md: who the Agent should be, including identity, values, voice, and standards.
  • AGENTS.md: how the Agent should work, including tools, workflow, safety, and failure handling.

dprofile treats those three files as one switchable profile.

Safety Model

The CLI does not guess system-level Agent directories.

The Agent using this skill must identify the target configuration directory first:

  • If the user provides a path, use that path.
  • If the user clearly means the current workspace, use the workspace root.
  • If the target is a system-level Agent config directory, ask the user to provide or confirm the exact path.
  • If the target is ambiguous, ask before changing files.

Before switching, dprofile backs up existing target files into .agent-profile-backups/ and writes .agent-profile-state.json so the active profile is inspectable.

Install

From a clone:

python3 -m pip install -e .

Then:

dprofile list

Without installing, use the local wrapper:

python3 scripts/agent_profile.py list

Quick Start

List bundled profiles:

dprofile list

Switch a target Agent config directory to completionist:

dprofile switch completionist --target-dir /path/to/agent-config

Show the active profile for a target directory:

dprofile show --target-dir /path/to/agent-config

Validate the target directory before switching:

dprofile validate-target --target-dir /path/to/agent-config

Compare two profiles:

dprofile diff architect writer

Write Modes

By default, switching uses symlinks:

dprofile switch architect --target-dir /path/to/agent-config

Use copy mode for portable exports, system-level directories, or tools that do not preserve symlinks:

dprofile switch architect --target-dir /path/to/agent-config --mode copy

Custom Profile Library

Use --profiles-dir to point at another profile library:

dprofile list --profiles-dir /path/to/profiles
dprofile switch ops --profiles-dir /path/to/profiles --target-dir /path/to/agent-config

Each profile directory must contain:

manifest.yaml
USER.md
SOUL.md
AGENTS.md

Bundled Profiles

  • architect: architecture, engineering decisions, AI infrastructure.
  • coding: direct implementation and fixes.
  • reviewer: code review and risk-first feedback.
  • debugger: hypothesis-driven debugging.
  • ops: SRE and production operations.
  • prompt-engineer: prompts, Agents, workflows, tool routing.
  • data-analyst: SQL, metrics, dashboards, and trends.
  • ml-researcher: model experiments, benchmarks, and papers.
  • ai-infra: inference architecture, GPUs, vLLM, MCP, and Agent runtimes.
  • writer: long-form writing and editing.
  • copywriter: headlines, slogans, conversion, and emotional clarity.
  • social-media: Xiaohongshu, Twitter/X, Weibo, Threads, and channel-native posts.
  • designer: UI style, visual systems, and information design.
  • product-manager: PRDs, user scenarios, scope, and metrics.
  • founder-mode: strategy, prioritization, growth, and judgment.
  • sales: persuasion, demos, objections, and business follow-up.
  • customer-support: support replies, complaints, FAQ, and resolution.
  • teacher: step-by-step teaching and analogy-driven explanations.
  • travel-planner: itinerary, hotels, pacing, and travel constraints.
  • fitness-coach: training, nutrition, recovery, and progression.
  • minimalist: concise output.
  • challenger: rigorous pushback and assumption testing.
  • slow-thinker: deeper reasoning, alternatives, and tradeoff analysis.
  • executor: direct task execution.
  • completionist: complete delivery with tests, docs, and cleanup.

Commands

dprofile list [--profiles-dir DIR] [--target-dir DIR]
dprofile validate-profile [PROFILE] [--profiles-dir DIR]
dprofile validate-target --target-dir DIR
dprofile switch PROFILE --target-dir DIR [--profiles-dir DIR] [--mode symlink|copy]
dprofile show [PROFILE] [--target-dir DIR] [--profiles-dir DIR]
dprofile diff LEFT RIGHT [--profiles-dir DIR]

The legacy command name agent-profile is also installed for compatibility.

Development

Run tests:

python3 -m unittest tests/test_agent_profile.py -v

Validate bundled profiles:

python3 scripts/agent_profile.py validate-profile

Release

Releases are published by GitHub Actions with PyPI Trusted Publishing. This avoids storing a PyPI API token in GitHub secrets.

Configure the PyPI project publisher with:

Owner: pythias
Repository name: dprofile
Workflow name: publish.yml
Environment name: pypi

Then bump the version in pyproject.toml and agent_profile/__init__.py, commit, tag, and push:

git tag v0.1.1
git push origin main
git push origin v0.1.1

The Publish to PyPI workflow will run tests, validate bundled profiles, build the source and wheel distributions, run twine check, and upload to PyPI.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dprofile-0.1.1.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dprofile-0.1.1-py3-none-any.whl (43.6 kB view details)

Uploaded Python 3

File details

Details for the file dprofile-0.1.1.tar.gz.

File metadata

  • Download URL: dprofile-0.1.1.tar.gz
  • Upload date:
  • Size: 25.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dprofile-0.1.1.tar.gz
Algorithm Hash digest
SHA256 862f6d66f4041073b65cc3c3d26ae13efd88239cb494de773192c70e3c86dcb1
MD5 3b4cc6d619b56d9c173f3b436d70637c
BLAKE2b-256 f3cc2bcfd7f51a511d34579b28fac6ccf3c6fcb3de491de90e75753019bbc3f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dprofile-0.1.1.tar.gz:

Publisher: publish.yml on pythias/dprofile

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dprofile-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: dprofile-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 43.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dprofile-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 56922bcb6589547723636b0eebda1cb1e64e60644c2f1428f02532c6bdb36ec0
MD5 92276b51b30245f01980b06f4a7cd793
BLAKE2b-256 7a40973ab51b3f8a63a83c8d53107f61efe1707139c480b5ff1d62f3dc710144

See more details on using hashes here.

Provenance

The following attestation bundles were made for dprofile-0.1.1-py3-none-any.whl:

Publisher: publish.yml on pythias/dprofile

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page