Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

pi/agent/workflows/reflect.json

Raw
{
	"name": "reflect",
	"description": "Mine Pi usage through adaptive parallel scans, develop three ideas, and have an adversarial judge select one terse proposal.",
	"args": {
		"hint": "[focus]",
		"params": ["focus"]
	},
	"schemas": {
		"PartitionPlan": {
			"type": "object",
			"properties": {
				"focus": { "type": "string", "maxLength": 1200 },
				"coverage": {
					"type": "array",
					"maxItems": 12,
					"items": { "type": "string", "maxLength": 1200 }
				},
				"uncovered_scope": {
					"type": "array",
					"maxItems": 12,
					"items": { "type": "string", "maxLength": 1200 }
				},
				"tasks": {
					"type": "array",
					"minItems": 1,
					"maxItems": 24,
					"items": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"maxLength": 96,
								"pattern": "^[A-Za-z0-9_-]+$"
							},
							"source": {
								"type": "string",
								"enum": ["sessions", "config", "extensions"]
							},
							"label": { "type": "string", "maxLength": 240 },
							"scope": { "type": "string", "maxLength": 1200 },
							"locators": {
								"type": "array",
								"minItems": 1,
								"maxItems": 24,
								"items": { "type": "string", "maxLength": 1200 }
							},
							"instructions": {
								"type": "array",
								"minItems": 1,
								"maxItems": 12,
								"items": { "type": "string", "maxLength": 1200 }
							},
							"exclusions": {
								"type": "array",
								"maxItems": 12,
								"items": { "type": "string", "maxLength": 1200 }
							}
						},
						"required": [
							"id",
							"source",
							"label",
							"scope",
							"locators",
							"instructions",
							"exclusions"
						]
					}
				}
			},
			"required": ["focus", "coverage", "uncovered_scope", "tasks"]
		},
		"ScanResult": {
			"type": "object",
			"properties": {
				"task_id": { "type": "string", "maxLength": 96 },
				"source": {
					"type": "string",
					"enum": ["sessions", "config", "extensions"]
				},
				"label": { "type": "string", "maxLength": 240 },
				"inspected": {
					"type": "array",
					"maxItems": 16,
					"items": { "type": "string", "maxLength": 1200 }
				},
				"observations": {
					"type": "array",
					"maxItems": 4,
					"items": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"maxLength": 120,
								"pattern": "^[A-Za-z0-9_-]+$"
							},
							"finding": { "type": "string", "maxLength": 1600 },
							"evidence": { "type": "string", "maxLength": 2400 },
							"locator": { "type": "string", "maxLength": 1600 }
						},
						"required": ["id", "finding", "evidence", "locator"]
					}
				},
				"counterevidence": {
					"type": "array",
					"maxItems": 6,
					"items": { "type": "string", "maxLength": 1600 }
				},
				"gaps": {
					"type": "array",
					"maxItems": 8,
					"items": { "type": "string", "maxLength": 1600 }
				}
			},
			"required": [
				"task_id",
				"source",
				"label",
				"inspected",
				"observations",
				"counterevidence",
				"gaps"
			]
		},
		"Candidate": {
			"type": "object",
			"properties": {
				"source": { "type": "string", "maxLength": 120 },
				"name": { "type": "string", "maxLength": 240 },
				"idea": { "type": "string", "maxLength": 2000 },
				"change": { "type": "string", "maxLength": 3200 },
				"suggested_destination": { "type": "string", "maxLength": 1200 },
				"impact": { "type": "string", "maxLength": 2400 },
				"current_state": { "type": "string", "maxLength": 2400 },
				"expected_state": { "type": "string", "maxLength": 2400 },
				"evidence": {
					"type": "array",
					"minItems": 1,
					"maxItems": 10,
					"items": {
						"type": "object",
						"properties": {
							"claim": { "type": "string", "maxLength": 1600 },
							"detail": { "type": "string", "maxLength": 2400 },
							"locator": { "type": "string", "maxLength": 1600 },
							"source": { "type": "string", "maxLength": 120 },
							"newly_inspected": { "type": "boolean" }
						},
						"required": [
							"claim",
							"detail",
							"locator",
							"source",
							"newly_inspected"
						]
					}
				},
				"existing_asset_comparison": {
					"type": "array",
					"maxItems": 8,
					"items": {
						"type": "object",
						"properties": {
							"path": { "type": "string", "maxLength": 1200 },
							"relation": { "type": "string", "maxLength": 1600 }
						},
						"required": ["path", "relation"]
					}
				},
				"counterevidence": {
					"type": "array",
					"maxItems": 8,
					"items": { "type": "string", "maxLength": 1600 }
				},
				"gaps": {
					"type": "array",
					"maxItems": 12,
					"items": { "type": "string", "maxLength": 1600 }
				}
			},
			"required": [
				"source",
				"name",
				"idea",
				"change",
				"suggested_destination",
				"impact",
				"current_state",
				"expected_state",
				"evidence",
				"existing_asset_comparison",
				"counterevidence",
				"gaps"
			]
		},
		"FinalReport": {
			"type": "object",
			"properties": {
				"choice": { "type": "string", "minLength": 1, "maxLength": 1200 },
				"report": { "type": "string", "minLength": 1, "maxLength": 8000 }
			},
			"required": ["choice", "report"]
		}
	},
	"phases": [
		{
			"id": "partition",
			"kind": "single",
			"step": {
				"summary": "partition reflection evidence sources",
				"prompt": "partition evidence collection for this reflection focus: {args.focus}. an empty focus means overall pi usage.\n\n- inspect source metadata and sizes, not substantive evidence\n- read and follow applicable agent instructions\n- read and follow the pi-sessions skill when inspecting session metadata\n- cover pi sessions; non-secret global and project pi agent config; and existing extensions from active global, project, and configured package roots\n- discover active roots from pi settings and package manifests rather than crawling home\n- never read auth files, decrypted secrets, secret-bearing files, or raw session files\n- split work along natural boundaries so tasks have roughly comparable evidence volume\n- use one config task unless observed size requires more\n- split extensions by active root or large subtree\n- split sessions by bounded date or discovered-session groups\n- allocate task count according to observed volume, with no more than 24 total tasks\n- make every task self-contained with exact locators, instructions, and exclusions\n- record omitted or sampled scope explicitly\n- use only read-only inspection and do not invoke nested agents\n\nreturn PartitionPlan.",
				"tools": ["read", "grep", "ls", "bash"],
				"model": "small",
				"schema": "PartitionPlan"
			}
		},
		{
			"id": "scan",
			"kind": "fanout",
			"over": "{partition.results[].tasks[]}",
			"concurrency": 12,
			"step": {
				"summary": "scan evidence partition {item}",
				"prompt": "scan this assigned evidence partition: {item}. reflection focus: {args.focus}.\n\n- inspect only the assigned scope and exact locators\n- follow every supplied instruction and exclusion\n- read and follow applicable agent instructions\n- for sessions, read and follow pi-sessions without inventing another inspection method\n- collect concrete evidence of repeated friction, manual rituals, missed checks, duplication, or relevant existing capability\n- distinguish direct observations from interpretation\n- cite session evidence by session id plus entry id or source line, and cite file evidence by exact path and relevant locator\n- count independent occurrences, not copied summaries, retained transcript material, abandoned branches, or repeated discussion of one incident\n- return no more than four strongest observations\n- include counterevidence, blockers, sampling limits, and uncovered scope\n- do not propose solutions\n- do not expose protected data, modify anything, use network access, or invoke nested agents\n\nreturn ScanResult and echo the task id, source, and label exactly.",
				"tools": ["read", "grep", "ls", "bash"],
				"model": "tiny",
				"schema": "ScanResult"
			}
		},
		{
			"id": "analyze",
			"kind": "fanout",
			"over": "{scan.results | groupBy source}",
			"concurrency": 3,
			"step": {
				"summary": "develop one source-owned improvement idea from {item}",
				"prompt": "develop exactly one high-impact pi workflow improvement from this source group: {item}. reflection focus: {args.focus}. partition failures: {partition.failures}. scanner failures: {scan.failures}.\n\n- treat the group key as the assigned source and its items as the complete scanner evidence packet\n- keep primary investigation within the assigned source\n- inspect additional detail when it can change the idea\n- inspect relevant existing assets outside the source only to test overlap, feasibility, or destination\n- follow applicable agent instructions and the pi-sessions skill for any added session inspection\n- prefer improving or merging an existing asset over creating another asset\n- select one concrete idea for this source, even when evidence is imperfect\n- include every fact used to support the idea in the returned evidence array\n- mark evidence gathered during this analysis as newly inspected\n- give exact session or file locators for all evidence, including newly inspected evidence\n- compare the idea with relevant existing assets at exact paths\n- include material counterevidence, relevant failed scans, sampling limits, and uncertainty in gaps\n- describe current and expected states plainly so another agent can draw them\n- never rely on tool history or hidden context because the final judge receives only this returned candidate\n- never invent evidence, expose protected data, modify anything, use network access, or invoke nested agents\n\nreturn Candidate. echo the source group key exactly in source and give the idea a short distinctive name.",
				"tools": ["read", "grep", "ls", "bash"],
				"model": "medium",
				"schema": "Candidate"
			}
		},
		{
			"id": "devil",
			"kind": "single",
			"step": {
				"summary": "adversarially select one reflection proposal",
				"prompt": "act as adversarial final judge for these source-owned candidate ideas: {analyze.results}. analyzer failures: {analyze.failures}. reflection focus: {args.focus}.\n\n- challenge recurrence, causality, impact, novelty, scope, maintenance cost, and evidence quality\n- compare the independently sourced ideas and detect duplicated, already-solved, overly broad, or weakly supported proposals\n- pick the strongest available idea and improve its proposal\n- name every supplied idea exactly once in a short ideas list\n- mark the picked idea with ✓ followed by two spaces\n- mark each rejected idea with ✗ followed by two spaces and one short reason\n- never invent evidence or claim independent verification\n- keep the whole report terse and human-readable, not a structured field dump\n- begin with one line shaped as an icon, two spaces, a concise action, scope, kind, and @path\n- choose the icon, action, scope, kind, and path language that best fits the proposal; do not use a fixed taxonomy\n- use that same opening action line without its icon as the terse choice value\n- follow the report opening with one sentence describing the proposal\n- use tasteful icons with two spaces of padding for compact section labels\n- give at most three short why bullets, five evidence bullets, and three caveat bullets\n- include minimal current and expected mermaid diagrams\n- do not include a status, acceptance check, process recap, raw candidate dump, or rigid key-value layout\n- output markdown only inside the report field\n\nreturn FinalReport with choice and report.",
				"model": "huge",
				"schema": "FinalReport"
			}
		}
	],
	"return": "{devil.results[].choice}",
	"report": "{devil.results[].report}"
}