Agent Plugins Marketplace
All plugins

agentic-plugin

PIANO-esque cognitive layer: persona-keyed state, heartbeat liveness, controller with classify/actuate

Claude Code

0 GitHub starsUpdated 2 days ago

Directory evidence

Runtimes
Claude Code
Parsed components
0 skill or MCP entries
Source updated
Sep 21, 2026
Manifest status
Canonical path parsed

The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology

Install agentic-plugin for Claude Code

Installs for the current user
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install agentic-plugin@agent-plugin-marketplace

Paste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.

The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.

Get the source manually
git clone https://github.com/SApplefeld/agent_persona

Clone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.

Plugin files

agentic-plugin/
└── .claude-plugin/plugin.json

Plugin manifests1

.claude-plugin/plugin.json
{
  "name": "agentic-plugin",
  "description": "PIANO-esque cognitive layer: persona-keyed state, heartbeat liveness, controller with classify/actuate",
  "userConfig": {
    "persona": {
      "type": "string",
      "default": "default",
      "title": "Persona",
      "description": "Which persona this session claims at start (e.g. 'default', 'dev'). Defaults to 'default' when unset."
    },
    "heartbeatMs": {
      "type": "number",
      "default": 30000,
      "title": "Heartbeat interval (ms)",
      "description": "How often the owner refreshes its heartbeat (ms). Default 30s."
    },
    "staleAfterMs": {
      "type": "number",
      "default": 90000,
      "title": "Stale threshold (ms)",
      "description": "How long before a heartbeat is considered stale (ms). Default 90s."
    },
    "controllerTickMs": {
      "type": "number",
      "default": 30000,
      "title": "Controller tick (ms)",
      "description": "How often the controller evaluates the goal (ms). Default 30s."
    },
    "nudgeFloorMs": {
      "type": "number",
      "default": 300000,
      "title": "Nudge floor (ms)",
      "description": "Minimum time between nudges (ms). Default 5min."
    },
    "nudgeIdleMs": {
      "type": "number",
      "default": 120000,
      "title": "Nudge idle gate (ms)",
      "description": "Session must be idle this long before a nudge is eligible (ms). Default 2min."
    },
    "healthTimeoutMs": {
      "type": "number",
      "default": 60000,
      "title": "Health timeout (ms)",
      "description": "Timeout for the health probe (ms). Default 60s, cap 120s."
    },
    "gitProbeMs": {
      "type": "number",
      "default": 120000,
      "title": "Git probe interval (ms)",
      "description": "How often the git probe runs (ms). Default 120s, cap 300s."
    },
    "askOperatorWaitMs": {
      "type": "number",
      "default": 3600000,
      "title": "Ask timeout (ms)",
      "description": "How long before an unanswered ask times out and the controller walks on to the next plan (ms). Default 60min."
    },
    "askReraiseWindowMs": {
      "type": "number",
      "default": 900000,
      "title": "Ask re-raise window (ms)",
      "description": "How long after opening an ask before re-raising it to the operator's thread (ms). Default 15min."
    },
    "askReaskSuppressMs": {
      "type": "number",
      "default": 600000,
      "title": "Ask re-ask suppress window (ms)",
      "description": "How long after closing an ask before the classifier can re-open the same question (ms). Default 10min."
    },
    "channelRecordWindow": {
      "type": "number",
      "default": 50,
      "title": "Channel record window (count)",
      "description": "How many closed inbox/reply records the shared store keeps per persona before rolling the rest to .agentic-channel.jsonl. Open asks are never rolled by this window. Default 50."
    },
    "arming": {
      "type": "string",
      "default": "off",
      "title": "Arming tier",
      "description": "off, reader or owner. off registers no tool, timer or claim (a plain chat session). reader registers agentic_identity/agentic_say/agentic_inbox/fleet_status only, with no goal-tree tool and no ownership. owner is the full worker/coordinator shape. A supervisor launch always sets owner."
    },
    "coordinatorPersona": {
      "type": "string",
      "default": "coordinator",
      "title": "Coordinator persona name",
      "description": "The one persona name the inbox gates treat as the coordinator: its owner may address any persona, and any named persona owner may address it. A configured name of 'default' is refused and falls back to 'coordinator'."
    },
    "architectPersona": {
      "type": "string",
      "default": "",
      "title": "Architect persona name",
      "description": "The persona name this file offers as the architect: the design seat the coordinator routes design asks to, and the seat whose own launch receives the architect charter. The supervisor is this setting's only reader. Where this file names no architect, the fleet has none and no design-escalation clause is built."
    },
    "fleetRoster": {
      "type": "string",
      "default": "",
      "title": "Fleet roster path",
      "description": "The roster file the fleet reading uses: a JSON array of persona entries, each naming a persona, its working directory, optionally its run directory, and whether the fleet runs it. The fleet_status tool reads it on demand, and the coordinator persona's controller tick reads it every tick to watch each roster persona's health class. Left unset, fleet_status reports that it has no roster to read and the tick's watcher stays silent."
    },
    "jevMode": {
      "type": "string",
      "default": "shadow",
      "title": "Jev shadow mode",
      "description": "off or shadow, and shadow is the default. shadow has the decision seam put each closed question the plugin already asks Haiku to Jev as well, beside it, and write the answer to the decision journal, acting on nothing it gets back. off makes no such call and writes no journal line. The supervisor refuses any other value rather than writing it, so a typo stops that launch instead of quietly disabling the seam."
    },
    "reconcileEveryMs": {
      "type": "number",
      "default": 14400000,
      "title": "Reconciliation cadence (ms)",
      "description": "How long between the [RECONCILE] prompts the coordinator persona's controller tick submits, which are the only trigger for the kit Coordinator seat's reconciliation pass. Default 4 hours, that seat's own cadence: the claim probe's window is one full cadence and the registry prune's staleness test is twice it, so a shorter run of either could fire nothing a four-hourly run misses. A value at or below zero takes the default, since it would otherwise be satisfied by every tick."
    }
  }
}

If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.

[agentic-plugin on Agent Plugins Marketplace](https://pluginsmp.com/plugins/agentic-plugin)