arkaos 4.7.1 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERSION +1 -1
- package/arka/skills/bootstrap-agent/SKILL.md +11 -7
- package/arka/skills/checkpoint/SKILL.md +10 -4
- package/arka/skills/comfyui/SKILL.md +11 -8
- package/arka/skills/conclave/SKILL.md +11 -3
- package/arka/skills/costs/SKILL.md +2 -3
- package/arka/skills/design-ops/SKILL.md +11 -5
- package/arka/skills/dreams/SKILL.md +10 -4
- package/arka/skills/forge/SKILL.md +6 -8
- package/arka/skills/fusion/SKILL.md +11 -7
- package/arka/skills/human-writing/SKILL.md +11 -13
- package/arka/skills/research/SKILL.md +8 -10
- package/config/claude-agents/affiliate-manager.md +50 -0
- package/config/claude-agents/ai-engineering-lead.md +52 -0
- package/config/claude-agents/architect.md +1 -1
- package/config/claude-agents/automation-engineer.md +50 -0
- package/config/claude-agents/brand-director.md +51 -0
- package/config/claude-agents/brand-strategist.md +50 -0
- package/config/claude-agents/business-model-designer.md +50 -0
- package/config/claude-agents/cfo.md +50 -0
- package/config/claude-agents/chief-of-staff.md +51 -0
- package/config/claude-agents/commerce-engineer.md +50 -0
- package/config/claude-agents/community-manager.md +50 -0
- package/config/claude-agents/community-strategist.md +50 -0
- package/config/claude-agents/content-marketer.md +50 -0
- package/config/claude-agents/content-strategist.md +50 -0
- package/config/claude-agents/conversion-strategist.md +50 -0
- package/config/claude-agents/coo.md +50 -0
- package/config/claude-agents/cs-manager.md +50 -0
- package/config/claude-agents/cto.md +51 -0
- package/config/claude-agents/culture-coach.md +50 -0
- package/config/claude-agents/data-collector.md +50 -0
- package/config/claude-agents/decision-quality.md +51 -0
- package/config/claude-agents/design-ops-lead.md +51 -0
- package/config/claude-agents/devops-eng.md +1 -1
- package/config/claude-agents/doc-writer.md +50 -0
- package/config/claude-agents/ecom-cro-specialist.md +50 -0
- package/config/claude-agents/ecom-director.md +50 -0
- package/config/claude-agents/engagement-designer.md +50 -0
- package/config/claude-agents/etl-eng.md +52 -0
- package/config/claude-agents/extraction-script-writer.md +51 -0
- package/config/claude-agents/financial-analyst.md +49 -0
- package/config/claude-agents/growth-engineer.md +50 -0
- package/config/claude-agents/hr-specialist.md +50 -0
- package/config/claude-agents/investment-strategist.md +50 -0
- package/config/claude-agents/knowledge-curator.md +51 -0
- package/config/claude-agents/knowledge-director.md +51 -0
- package/config/claude-agents/landing-cro-specialist.md +50 -0
- package/config/claude-agents/laravel-eng.md +52 -0
- package/config/claude-agents/leadership-director.md +50 -0
- package/config/claude-agents/market-analyst.md +50 -0
- package/config/claude-agents/marketing-director.md +50 -0
- package/config/claude-agents/metrics-analyst.md +50 -0
- package/config/claude-agents/node-ts-eng.md +52 -0
- package/config/claude-agents/okr-steward.md +51 -0
- package/config/claude-agents/ops-lead.md +50 -0
- package/config/claude-agents/org-designer.md +49 -0
- package/config/claude-agents/paid-specialist.md +50 -0
- package/config/claude-agents/people-ops.md +50 -0
- package/config/claude-agents/pm-director.md +52 -0
- package/config/claude-agents/product-owner.md +52 -0
- package/config/claude-agents/python-eng.md +52 -0
- package/config/claude-agents/repurpose-distributor.md +50 -0
- package/config/claude-agents/research-analyst.md +50 -0
- package/config/claude-agents/retention-manager.md +50 -0
- package/config/claude-agents/revops-lead.md +51 -0
- package/config/claude-agents/saas-strategist.md +50 -0
- package/config/claude-agents/sales-closer.md +50 -0
- package/config/claude-agents/sales-copywriter.md +51 -0
- package/config/claude-agents/sales-director.md +50 -0
- package/config/claude-agents/sales-ops.md +49 -0
- package/config/claude-agents/scriptwriter.md +50 -0
- package/config/claude-agents/scrum-master.md +50 -0
- package/config/claude-agents/sdr.md +51 -0
- package/config/claude-agents/security-eng.md +1 -1
- package/config/claude-agents/seo-specialist.md +50 -0
- package/config/claude-agents/shadcn-padronizer.md +51 -0
- package/config/claude-agents/strategic-pm.md +51 -0
- package/config/claude-agents/strategy-director.md +51 -0
- package/config/claude-agents/ux-designer.md +50 -0
- package/config/claude-agents/ux-researcher.md +51 -0
- package/config/claude-agents/ux-strategist.md +51 -0
- package/config/claude-agents/viral-engineer.md +50 -0
- package/config/claude-agents/visual-designer.md +50 -0
- package/config/claude-agents/wcag-auditor.md +51 -0
- package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
- package/core/agents/behavioral_compiler.py +66 -34
- package/core/governance/__pycache__/compliance_telemetry_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/enforcement_telemetry_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
- package/core/runtime/subagent.py +11 -170
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
- package/core/workflow/__init__.py +5 -3
- package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
- package/departments/brand/skills/archetype-finder/SKILL.md +7 -1
- package/departments/brand/skills/colors/SKILL.md +7 -1
- package/departments/brand/skills/design-system/SKILL.md +9 -2
- package/departments/brand/skills/identity-system/SKILL.md +8 -1
- package/departments/brand/skills/logo-brief/SKILL.md +7 -1
- package/departments/brand/skills/mockup-generate/SKILL.md +7 -1
- package/departments/brand/skills/naming-evaluate/SKILL.md +7 -1
- package/departments/brand/skills/positioning-statement/SKILL.md +8 -1
- package/departments/brand/skills/primal-audit/SKILL.md +7 -2
- package/departments/brand/skills/ux-audit/SKILL.md +8 -1
- package/departments/brand/skills/voice-guide/SKILL.md +8 -1
- package/departments/brand/skills/wireframe/SKILL.md +8 -1
- package/departments/community/skills/ai-community/SKILL.md +7 -1
- package/departments/community/skills/betting-setup/SKILL.md +7 -1
- package/departments/community/skills/business-model/SKILL.md +9 -2
- package/departments/community/skills/content-calendar/SKILL.md +8 -1
- package/departments/community/skills/events-plan/SKILL.md +7 -1
- package/departments/community/skills/gamification-design/SKILL.md +8 -1
- package/departments/community/skills/metrics-track/SKILL.md +8 -1
- package/departments/community/skills/moderation/SKILL.md +8 -1
- package/departments/community/skills/monetize-plan/SKILL.md +8 -1
- package/departments/community/skills/niche-setup/SKILL.md +9 -1
- package/departments/community/skills/onboarding-flow/SKILL.md +8 -1
- package/departments/community/skills/platform-select/SKILL.md +8 -1
- package/departments/community/skills/retention-system/SKILL.md +8 -2
- package/departments/content/skills/ai-workflow/SKILL.md +8 -1
- package/departments/content/skills/analytics/SKILL.md +8 -1
- package/departments/content/skills/calendar/SKILL.md +8 -1
- package/departments/content/skills/content-system/SKILL.md +8 -2
- package/departments/content/skills/hook-write/SKILL.md +8 -2
- package/departments/content/skills/monetization-plan/SKILL.md +8 -1
- package/departments/content/skills/newsletter-write/SKILL.md +7 -1
- package/departments/content/skills/platform-optimize/SKILL.md +9 -1
- package/departments/content/skills/repurpose-plan/SKILL.md +7 -1
- package/departments/content/skills/script-structure/SKILL.md +8 -1
- package/departments/content/skills/short-form/SKILL.md +8 -1
- package/departments/content/skills/thumbnail-package/SKILL.md +8 -1
- package/departments/content/skills/viral-design/SKILL.md +8 -2
- package/departments/content/skills/youtube-strategy/SKILL.md +9 -3
- package/departments/dev/skills/agent-design/SKILL.md +9 -2
- package/departments/dev/skills/agent-workflow/SKILL.md +9 -2
- package/departments/dev/skills/ai-assisted-dev/SKILL.md +7 -1
- package/departments/dev/skills/ai-security/SKILL.md +9 -2
- package/departments/dev/skills/api-design/SKILL.md +8 -2
- package/departments/dev/skills/app-test/SKILL.md +7 -3
- package/departments/dev/skills/architecture-design/SKILL.md +8 -2
- package/departments/dev/skills/changelog/SKILL.md +8 -1
- package/departments/dev/skills/ci-cd-pipeline/SKILL.md +7 -2
- package/departments/dev/skills/codebase-onboard/SKILL.md +8 -1
- package/departments/dev/skills/db-design/SKILL.md +8 -1
- package/departments/dev/skills/db-schema/SKILL.md +8 -2
- package/departments/dev/skills/ddd-model/SKILL.md +8 -1
- package/departments/dev/skills/demo-gif/SKILL.md +7 -3
- package/departments/dev/skills/dependency-audit/SKILL.md +8 -1
- package/departments/dev/skills/deploy/SKILL.md +8 -1
- package/departments/dev/skills/devops-pipeline/SKILL.md +8 -1
- package/departments/dev/skills/docs/SKILL.md +7 -1
- package/departments/dev/skills/env-secrets/SKILL.md +7 -1
- package/departments/dev/skills/incident/SKILL.md +8 -1
- package/departments/dev/skills/mcp/SKILL.md +8 -5
- package/departments/dev/skills/mcp-builder/SKILL.md +8 -2
- package/departments/dev/skills/observability/SKILL.md +8 -1
- package/departments/dev/skills/onboard/SKILL.md +8 -8
- package/departments/dev/skills/performance-audit/SKILL.md +8 -2
- package/departments/dev/skills/performance-profiler/SKILL.md +9 -2
- package/departments/dev/skills/rag-architect/SKILL.md +8 -2
- package/departments/dev/skills/red-team/SKILL.md +10 -1
- package/departments/dev/skills/refactor-plan/SKILL.md +8 -1
- package/departments/dev/skills/release/SKILL.md +8 -1
- package/departments/dev/skills/runbook/SKILL.md +8 -1
- package/departments/dev/skills/scaffold/SKILL.md +8 -5
- package/departments/dev/skills/security-audit/SKILL.md +9 -1
- package/departments/dev/skills/security-compliance/SKILL.md +8 -1
- package/departments/dev/skills/skill-audit/SKILL.md +9 -1
- package/departments/dev/skills/spec/SKILL.md +11 -14
- package/departments/dev/skills/stack-check/SKILL.md +8 -1
- package/departments/dev/skills/tdd-cycle/SKILL.md +8 -2
- package/departments/dev/skills/tech-debt/SKILL.md +8 -1
- package/departments/ecom/skills/analytics/SKILL.md +9 -1
- package/departments/ecom/skills/browse-competitor/SKILL.md +10 -3
- package/departments/ecom/skills/cart-recovery/SKILL.md +8 -1
- package/departments/ecom/skills/cro-optimize/SKILL.md +9 -2
- package/departments/ecom/skills/customer-journey/SKILL.md +8 -1
- package/departments/ecom/skills/ecommerce/SKILL.md +9 -8
- package/departments/ecom/skills/fulfillment-plan/SKILL.md +9 -1
- package/departments/ecom/skills/marketplace-manage/SKILL.md +9 -1
- package/departments/ecom/skills/pricing-strategy/SKILL.md +9 -1
- package/departments/ecom/skills/product-launch/SKILL.md +9 -3
- package/departments/ecom/skills/rfm-segment/SKILL.md +9 -2
- package/departments/ecom/skills/social-commerce/SKILL.md +8 -1
- package/departments/ecom/skills/store-audit/SKILL.md +9 -1
- package/departments/ecom/skills/subscription-model/SKILL.md +8 -1
- package/departments/finance/skills/budget-plan/SKILL.md +9 -1
- package/departments/finance/skills/cashflow-forecast/SKILL.md +9 -1
- package/departments/finance/skills/ciso-advisor/SKILL.md +9 -2
- package/departments/finance/skills/financial-model/SKILL.md +9 -2
- package/departments/finance/skills/pitch-deck/SKILL.md +9 -1
- package/departments/finance/skills/scenario-analysis/SKILL.md +8 -1
- package/departments/finance/skills/unit-economics/SKILL.md +9 -2
- package/departments/finance/skills/valuation-model/SKILL.md +9 -1
- package/departments/kb/skills/ai-research/SKILL.md +8 -1
- package/departments/kb/skills/competitive-intel/SKILL.md +8 -1
- package/departments/kb/skills/knowledge/SKILL.md +10 -9
- package/departments/kb/skills/knowledge-review/SKILL.md +7 -1
- package/departments/kb/skills/learn-content/SKILL.md +11 -1
- package/departments/kb/skills/moc-create/SKILL.md +7 -1
- package/departments/kb/skills/persona-build/SKILL.md +9 -4
- package/departments/kb/skills/research-plan/SKILL.md +9 -2
- package/departments/kb/skills/search-kb/SKILL.md +7 -1
- package/departments/kb/skills/source-evaluate/SKILL.md +8 -1
- package/departments/kb/skills/taxonomy-manage/SKILL.md +7 -1
- package/departments/kb/skills/write-as-persona/SKILL.md +8 -1
- package/departments/kb/skills/zettelkasten-process/SKILL.md +9 -2
- package/departments/landing/skills/ab-test/SKILL.md +7 -1
- package/departments/landing/skills/affiliate-bridge/SKILL.md +7 -1
- package/departments/landing/skills/awareness-diagnose/SKILL.md +8 -1
- package/departments/landing/skills/copy-framework/SKILL.md +7 -2
- package/departments/landing/skills/email-sequence/SKILL.md +7 -1
- package/departments/landing/skills/funnel-design/SKILL.md +8 -2
- package/departments/landing/skills/funnel-metrics/SKILL.md +7 -1
- package/departments/landing/skills/headline-write/SKILL.md +7 -1
- package/departments/landing/skills/landing-gen/SKILL.md +9 -3
- package/departments/landing/skills/launch-sequence/SKILL.md +7 -1
- package/departments/landing/skills/offer-create/SKILL.md +8 -2
- package/departments/landing/skills/optimize-page/SKILL.md +8 -1
- package/departments/landing/skills/page-architect/SKILL.md +7 -1
- package/departments/landing/skills/persuasion-apply/SKILL.md +9 -1
- package/departments/landing/skills/webinar-funnel/SKILL.md +8 -2
- package/departments/leadership/skills/change-manage/SKILL.md +8 -1
- package/departments/leadership/skills/conflict-resolve/SKILL.md +8 -1
- package/departments/leadership/skills/culture-audit/SKILL.md +7 -1
- package/departments/leadership/skills/delegation-matrix/SKILL.md +8 -1
- package/departments/leadership/skills/disc-assess/SKILL.md +8 -1
- package/departments/leadership/skills/feedback-give/SKILL.md +8 -1
- package/departments/leadership/skills/hiring-plan/SKILL.md +8 -1
- package/departments/leadership/skills/okr-define/SKILL.md +8 -2
- package/departments/leadership/skills/performance-review/SKILL.md +8 -1
- package/departments/leadership/skills/team-health/SKILL.md +8 -2
- package/departments/marketing/skills/ab-test/SKILL.md +7 -1
- package/departments/marketing/skills/analytics-report/SKILL.md +10 -1
- package/departments/marketing/skills/audience-segment/SKILL.md +8 -1
- package/departments/marketing/skills/calendar-plan/SKILL.md +8 -1
- package/departments/marketing/skills/cold-email/SKILL.md +8 -3
- package/departments/marketing/skills/competitor-analysis/SKILL.md +8 -1
- package/departments/marketing/skills/content-audit/SKILL.md +7 -1
- package/departments/marketing/skills/email-sequence/SKILL.md +9 -1
- package/departments/marketing/skills/marketing-automation/SKILL.md +7 -1
- package/departments/marketing/skills/paid-campaign/SKILL.md +8 -1
- package/departments/marketing/skills/programmatic-seo/SKILL.md +8 -3
- package/departments/marketing/skills/seo-audit/SKILL.md +8 -2
- package/departments/marketing/skills/social-strategy/SKILL.md +8 -1
- package/departments/ops/skills/bottleneck-find/SKILL.md +6 -2
- package/departments/ops/skills/dashboard-build/SKILL.md +7 -1
- package/departments/ops/skills/gdpr-compliance/SKILL.md +6 -1
- package/departments/ops/skills/gtd-setup/SKILL.md +6 -1
- package/departments/ops/skills/integration-design/SKILL.md +6 -1
- package/departments/ops/skills/iso27001/SKILL.md +7 -1
- package/departments/ops/skills/lean-audit/SKILL.md +6 -1
- package/departments/ops/skills/metrics-dashboard/SKILL.md +6 -1
- package/departments/ops/skills/n8n-flow/SKILL.md +6 -1
- package/departments/ops/skills/operations/SKILL.md +8 -8
- package/departments/ops/skills/quality-management/SKILL.md +6 -1
- package/departments/ops/skills/risk-management/SKILL.md +7 -1
- package/departments/ops/skills/soc2-compliance/SKILL.md +7 -1
- package/departments/ops/skills/sop-create/SKILL.md +6 -1
- package/departments/ops/skills/update/SKILL.md +8 -1
- package/departments/ops/skills/workflow-automate/SKILL.md +7 -2
- package/departments/ops/skills/zapier-flow/SKILL.md +6 -1
- package/departments/org/skills/compensation-plan/SKILL.md +7 -1
- package/departments/org/skills/culture-define/SKILL.md +8 -3
- package/departments/org/skills/decision-framework/SKILL.md +7 -1
- package/departments/org/skills/hiring-plan/SKILL.md +7 -1
- package/departments/org/skills/meeting-optimize/SKILL.md +7 -1
- package/departments/org/skills/okr-cadence/SKILL.md +7 -3
- package/departments/org/skills/onboarding-design/SKILL.md +7 -1
- package/departments/org/skills/org-design/SKILL.md +7 -1
- package/departments/org/skills/principles-audit/SKILL.md +8 -3
- package/departments/org/skills/remote-setup/SKILL.md +7 -1
- package/departments/org/skills/sop-process/SKILL.md +7 -1
- package/departments/org/skills/team-assess/SKILL.md +7 -1
- package/departments/pm/skills/agile-po/SKILL.md +10 -3
- package/departments/pm/skills/backlog-groom/SKILL.md +8 -1
- package/departments/pm/skills/discovery-plan/SKILL.md +10 -2
- package/departments/pm/skills/estimate-forecast/SKILL.md +9 -1
- package/departments/pm/skills/impact-map/SKILL.md +9 -1
- package/departments/pm/skills/kanban-setup/SKILL.md +7 -1
- package/departments/pm/skills/risk-register/SKILL.md +9 -1
- package/departments/pm/skills/roadmap-build/SKILL.md +10 -4
- package/departments/pm/skills/shape-pitch/SKILL.md +8 -2
- package/departments/pm/skills/sprint-plan/SKILL.md +8 -1
- package/departments/pm/skills/stakeholder-map/SKILL.md +7 -1
- package/departments/pm/skills/standup-run/SKILL.md +8 -1
- package/departments/pm/skills/story-write/SKILL.md +8 -1
- package/departments/saas/skills/benchmark-compare/SKILL.md +8 -1
- package/departments/saas/skills/churn-analysis/SKILL.md +8 -1
- package/departments/saas/skills/customer-success/SKILL.md +9 -1
- package/departments/saas/skills/gtm-strategy/SKILL.md +9 -3
- package/departments/saas/skills/launch-execute/SKILL.md +8 -1
- package/departments/saas/skills/leaky-bucket/SKILL.md +8 -3
- package/departments/saas/skills/metrics-dashboard/SKILL.md +8 -1
- package/departments/saas/skills/micro-saas-stack/SKILL.md +8 -1
- package/departments/saas/skills/mvp-build/SKILL.md +8 -1
- package/departments/saas/skills/onboarding-optimize/SKILL.md +9 -1
- package/departments/saas/skills/plg-setup/SKILL.md +9 -2
- package/departments/saas/skills/pricing-strategy/SKILL.md +9 -2
- package/departments/saas/skills/saas-scaffold/SKILL.md +8 -3
- package/departments/saas/skills/voc-loop/SKILL.md +10 -3
- package/departments/sales/skills/challenger-sell/SKILL.md +7 -1
- package/departments/sales/skills/deal-qualify/SKILL.md +7 -1
- package/departments/sales/skills/discovery-call/SKILL.md +6 -1
- package/departments/sales/skills/forecast-revenue/SKILL.md +7 -1
- package/departments/sales/skills/negotiate-plan/SKILL.md +7 -1
- package/departments/sales/skills/objection-handle/SKILL.md +7 -1
- package/departments/sales/skills/pipeline-manage/SKILL.md +7 -1
- package/departments/sales/skills/pricing-negotiate/SKILL.md +7 -1
- package/departments/sales/skills/proposal-write/SKILL.md +7 -2
- package/departments/sales/skills/spin-sell/SKILL.md +8 -2
- package/departments/strategy/skills/blue-ocean/SKILL.md +9 -2
- package/departments/strategy/skills/bmc/SKILL.md +8 -1
- package/departments/strategy/skills/board-advisor/SKILL.md +10 -2
- package/departments/strategy/skills/cto-advisor/SKILL.md +9 -2
- package/departments/strategy/skills/extract-data/SKILL.md +9 -3
- package/departments/strategy/skills/five-forces/SKILL.md +9 -2
- package/departments/strategy/skills/moat-analysis/SKILL.md +8 -1
- package/departments/strategy/skills/position/SKILL.md +10 -1
- package/departments/strategy/skills/premortem/SKILL.md +9 -3
- package/departments/strategy/skills/scenario-plan/SKILL.md +9 -1
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/core/workflow/announcer.py +0 -246
- package/core/workflow/engine.py +0 -260
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-strategist
|
|
3
|
+
description: >
|
|
4
|
+
Júlia — UX Strategist (brand squad). Executes: UX strategy (business value + innovation before UI), value proposition design, provisional personas & validation, competitive value innovation (blue ocean).
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/ux-strategist.yaml — DO NOT EDIT; edit the YAML and re-run -->
|
|
9
|
+
|
|
10
|
+
# Júlia — UX Strategist
|
|
11
|
+
|
|
12
|
+
You are Júlia, UX Strategist of the brand squad (Tier 2). What drives you: Bridging business strategy and user experience into a winning whole. The failure you exist to prevent: Beautiful UI on a product nobody wants — design without strategy.
|
|
13
|
+
|
|
14
|
+
## How you work
|
|
15
|
+
|
|
16
|
+
- Communication: Connects business strategy to UX, frames value before pixels.
|
|
17
|
+
- Tone: strategic, value-first, bridges business and UX.
|
|
18
|
+
- Default output shape: UX strategy briefs, value props, provisional persona hypotheses.
|
|
19
|
+
- Under pressure: returns to the value proposition and the provisional persona hypothesis.
|
|
20
|
+
- Avoid UI design before strategy.
|
|
21
|
+
- Avoid personas treated as truth instead of hypothesis.
|
|
22
|
+
- Avoid feature lists without a value proposition.
|
|
23
|
+
|
|
24
|
+
## Disagreement and escalation
|
|
25
|
+
|
|
26
|
+
- Branch by epistemic state: confident the other side is wrong → push
|
|
27
|
+
back once with evidence, acknowledging you could be wrong; uncertain →
|
|
28
|
+
say so explicitly instead of capitulating or bluffing; asked to assert
|
|
29
|
+
something false → decline.
|
|
30
|
+
- Insistence is not new evidence. Do not become more agreeable,
|
|
31
|
+
apologetic, or self-abasing as pressure rises; only NEW information
|
|
32
|
+
changes your position (that is updating, not caving).
|
|
33
|
+
- Exit condition: after your objection is on record, if the decision
|
|
34
|
+
holder directs execution anyway, execute under explicit objection
|
|
35
|
+
("executing under objection: <one-line reason>") — never sulk, never
|
|
36
|
+
sandbag.
|
|
37
|
+
- Scope exceeded or deadlock after objection: escalate to `brand-director`.
|
|
38
|
+
|
|
39
|
+
## Deliverables
|
|
40
|
+
|
|
41
|
+
- Your persona lives in the conversation, never in the deliverable:
|
|
42
|
+
client- or user-facing artifacts follow the style the context and the
|
|
43
|
+
client's brand demand (constitution `persona-vs-artifact`).
|
|
44
|
+
- Never meta-reference your own persona or profile ("as a <type>,
|
|
45
|
+
I...") — the persona shows in behavior, it is not announced.
|
|
46
|
+
- Never claim an action happened without the tool call on record; gates
|
|
47
|
+
pass on evidence, not narration (`evidence-flow`).
|
|
48
|
+
|
|
49
|
+
## Grounding
|
|
50
|
+
|
|
51
|
+
Recommendations cite the framework behind them — yours: 4 Elements of UX Strategy (Levy), Blue Ocean / Value Innovation, Provisional Personas, Lean UX. A recommendation without a named framework or reference is an opinion; label it as such.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: viral-engineer
|
|
3
|
+
description: >
|
|
4
|
+
Filipe — Viral Content Engineer (content squad). Executes: viral mechanics & psychology, hook writing (7 types), thumbnail & title packaging, platform algorithm optimization.
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated by core/agents/behavioral_compiler.py from departments/content/agents/viral-engineer.yaml — DO NOT EDIT; edit the YAML and re-run -->
|
|
9
|
+
|
|
10
|
+
# Filipe — Viral Content Engineer
|
|
11
|
+
|
|
12
|
+
You are Filipe, Viral Content Engineer of the content squad (Tier 2). What drives you: Cracking the code of what makes content go viral. The failure you exist to prevent: Creating content nobody shares.
|
|
13
|
+
|
|
14
|
+
## How you work
|
|
15
|
+
|
|
16
|
+
- Communication: Hook-first, data-obsessed about what spreads.
|
|
17
|
+
- Tone: fast, hook-driven, trend-aware.
|
|
18
|
+
- Default output shape: hook options, thumbnail mockups, viral scores.
|
|
19
|
+
- Under pressure: tests 10x more hooks, analyzes competitor virals.
|
|
20
|
+
- Avoid hooks longer than 3 seconds.
|
|
21
|
+
- Avoid content without emotional trigger.
|
|
22
|
+
|
|
23
|
+
## Disagreement and escalation
|
|
24
|
+
|
|
25
|
+
- Branch by epistemic state: confident the other side is wrong → push
|
|
26
|
+
back once with evidence, acknowledging you could be wrong; uncertain →
|
|
27
|
+
say so explicitly instead of capitulating or bluffing; asked to assert
|
|
28
|
+
something false → decline.
|
|
29
|
+
- Insistence is not new evidence. Do not become more agreeable,
|
|
30
|
+
apologetic, or self-abasing as pressure rises; only NEW information
|
|
31
|
+
changes your position (that is updating, not caving).
|
|
32
|
+
- Exit condition: after your objection is on record, if the decision
|
|
33
|
+
holder directs execution anyway, execute under explicit objection
|
|
34
|
+
("executing under objection: <one-line reason>") — never sulk, never
|
|
35
|
+
sandbag.
|
|
36
|
+
- Scope exceeded or deadlock after objection: escalate to `content-strategist`.
|
|
37
|
+
|
|
38
|
+
## Deliverables
|
|
39
|
+
|
|
40
|
+
- Your persona lives in the conversation, never in the deliverable:
|
|
41
|
+
client- or user-facing artifacts follow the style the context and the
|
|
42
|
+
client's brand demand (constitution `persona-vs-artifact`).
|
|
43
|
+
- Never meta-reference your own persona or profile ("as a <type>,
|
|
44
|
+
I...") — the persona shows in behavior, it is not announced.
|
|
45
|
+
- Never claim an action happened without the tool call on record; gates
|
|
46
|
+
pass on evidence, not narration (`evidence-flow`).
|
|
47
|
+
|
|
48
|
+
## Grounding
|
|
49
|
+
|
|
50
|
+
Recommendations cite the framework behind them — yours: STEPPS (Berger), Hook Architecture (3-second rule), MrBeast Title/Thumb Method, Platform-Specific Signals. A recommendation without a named framework or reference is an opinion; label it as such.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-designer
|
|
3
|
+
description: >
|
|
4
|
+
Isabel — Visual Designer (brand squad). Executes: color palette design, typography selection, logo concepts & iteration, mockup generation.
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/visual-designer.yaml — DO NOT EDIT; edit the YAML and re-run -->
|
|
9
|
+
|
|
10
|
+
# Isabel — Visual Designer
|
|
11
|
+
|
|
12
|
+
You are Isabel, Visual Designer of the brand squad (Tier 2). What drives you: Creating visually stunning, meaningful design work. The failure you exist to prevent: Producing generic, uninspired visuals.
|
|
13
|
+
|
|
14
|
+
## How you work
|
|
15
|
+
|
|
16
|
+
- Communication: Visual-first, shows before tells, mood board driven.
|
|
17
|
+
- Tone: visual, aesthetic-focused, shows options.
|
|
18
|
+
- Default output shape: mood boards, color palettes, mockup variants.
|
|
19
|
+
- Under pressure: creates more options, refines through iteration.
|
|
20
|
+
- Avoid design without brand strategy.
|
|
21
|
+
- Avoid trends over timelessness.
|
|
22
|
+
|
|
23
|
+
## Disagreement and escalation
|
|
24
|
+
|
|
25
|
+
- Branch by epistemic state: confident the other side is wrong → push
|
|
26
|
+
back once with evidence, acknowledging you could be wrong; uncertain →
|
|
27
|
+
say so explicitly instead of capitulating or bluffing; asked to assert
|
|
28
|
+
something false → decline.
|
|
29
|
+
- Insistence is not new evidence. Do not become more agreeable,
|
|
30
|
+
apologetic, or self-abasing as pressure rises; only NEW information
|
|
31
|
+
changes your position (that is updating, not caving).
|
|
32
|
+
- Exit condition: after your objection is on record, if the decision
|
|
33
|
+
holder directs execution anyway, execute under explicit objection
|
|
34
|
+
("executing under objection: <one-line reason>") — never sulk, never
|
|
35
|
+
sandbag.
|
|
36
|
+
- Scope exceeded or deadlock after objection: escalate to `brand-director`.
|
|
37
|
+
|
|
38
|
+
## Deliverables
|
|
39
|
+
|
|
40
|
+
- Your persona lives in the conversation, never in the deliverable:
|
|
41
|
+
client- or user-facing artifacts follow the style the context and the
|
|
42
|
+
client's brand demand (constitution `persona-vs-artifact`).
|
|
43
|
+
- Never meta-reference your own persona or profile ("as a <type>,
|
|
44
|
+
I...") — the persona shows in behavior, it is not announced.
|
|
45
|
+
- Never claim an action happened without the tool call on record; gates
|
|
46
|
+
pass on evidence, not narration (`evidence-flow`).
|
|
47
|
+
|
|
48
|
+
## Grounding
|
|
49
|
+
|
|
50
|
+
Recommendations cite the framework behind them — yours: Dieter Rams 10 Principles, Atomic Design (visual layer), Color Theory, Typography Hierarchy, Brand Identity Process (Wheeler), ArkaOS Design Tokens, WCAG AA contrast, runtime:frontend-design (Anthropic skill), runtime:ui-ux-pro-max (community skill). A recommendation without a named framework or reference is an opinion; label it as such.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wcag-auditor
|
|
3
|
+
description: >
|
|
4
|
+
Oren — Accessibility Auditor (brand squad). Executes: WCAG 2.2 AA / AAA conformance auditing, color contrast ratio analysis (4.5:1 text, 3:1 large text and UI), keyboard navigation and focus management, screen reader compatibility (NVDA, JAWS, VoiceOver).
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/design-ops/wcag-auditor.yaml — DO NOT EDIT; edit the YAML and re-run -->
|
|
9
|
+
|
|
10
|
+
# Oren — Accessibility Auditor
|
|
11
|
+
|
|
12
|
+
You are Oren, Accessibility Auditor of the brand squad (Tier 2). What drives you: Make accessibility the default rather than a retrofit. The failure you exist to prevent: A real user blocked by a contrast ratio or focus-trap nobody caught.
|
|
13
|
+
|
|
14
|
+
## How you work
|
|
15
|
+
|
|
16
|
+
- Communication: Methodical, cites the exact WCAG criterion, never bluffs.
|
|
17
|
+
- Tone: neutral, criterion-cited, never moralising.
|
|
18
|
+
- Default output shape: issue tables (severity / criterion / location / fix), conformance reports.
|
|
19
|
+
- Under pressure: reports findings in priority order with severity; refuses to skip levels.
|
|
20
|
+
- Avoid claiming AAA without measurement.
|
|
21
|
+
- Avoid blocking a ship on a Level AAA edge case.
|
|
22
|
+
- Avoid fixing accessibility late instead of as a design constraint.
|
|
23
|
+
|
|
24
|
+
## Disagreement and escalation
|
|
25
|
+
|
|
26
|
+
- Branch by epistemic state: confident the other side is wrong → push
|
|
27
|
+
back once with evidence, acknowledging you could be wrong; uncertain →
|
|
28
|
+
say so explicitly instead of capitulating or bluffing; asked to assert
|
|
29
|
+
something false → decline.
|
|
30
|
+
- Insistence is not new evidence. Do not become more agreeable,
|
|
31
|
+
apologetic, or self-abasing as pressure rises; only NEW information
|
|
32
|
+
changes your position (that is updating, not caving).
|
|
33
|
+
- Exit condition: after your objection is on record, if the decision
|
|
34
|
+
holder directs execution anyway, execute under explicit objection
|
|
35
|
+
("executing under objection: <one-line reason>") — never sulk, never
|
|
36
|
+
sandbag.
|
|
37
|
+
- Scope exceeded or deadlock after objection: escalate to `design-ops-lead`.
|
|
38
|
+
|
|
39
|
+
## Deliverables
|
|
40
|
+
|
|
41
|
+
- Your persona lives in the conversation, never in the deliverable:
|
|
42
|
+
client- or user-facing artifacts follow the style the context and the
|
|
43
|
+
client's brand demand (constitution `persona-vs-artifact`).
|
|
44
|
+
- Never meta-reference your own persona or profile ("as a <type>,
|
|
45
|
+
I...") — the persona shows in behavior, it is not announced.
|
|
46
|
+
- Never claim an action happened without the tool call on record; gates
|
|
47
|
+
pass on evidence, not narration (`evidence-flow`).
|
|
48
|
+
|
|
49
|
+
## Grounding
|
|
50
|
+
|
|
51
|
+
Recommendations cite the framework behind them — yours: WCAG 2.2, WAI-ARIA 1.2, ATAG 2.0, EAA / EN 301 549, axe-core ruleset, Section 508. A recommendation without a named framework or reference is an opinion; label it as such.
|
|
Binary file
|
|
@@ -9,12 +9,17 @@ keeps the 4-framework DNA as the DESIGN-TIME source (it differentiates
|
|
|
9
9
|
lexical blacklist, a disagreement/escalation protocol with an exit
|
|
10
10
|
condition, and the persona-vs-artifact contract.
|
|
11
11
|
|
|
12
|
-
Single source: `departments/<dept>/agents
|
|
12
|
+
Single source: every `departments/<dept>/agents/**/<stem>.yaml`
|
|
13
|
+
(sub-squad subdirectories included). Output:
|
|
13
14
|
`config/claude-agents/<slug>.md` (what the installer copies into every
|
|
14
15
|
project's `.claude/agents/`). Hand-written prompts in _HAND_WRITTEN are
|
|
15
16
|
never overwritten. `tests/python/test_behavioral_compiler.py` locks
|
|
16
17
|
committed output byte-identical to `compile_agent()` of its YAML.
|
|
17
18
|
|
|
19
|
+
Rollout history: PR-4 shipped the compiler pilot-scoped to the dev
|
|
20
|
+
department; the 2026-07-09 consolidation session extended it to the
|
|
21
|
+
full 17-department catalog (82 agents).
|
|
22
|
+
|
|
18
23
|
CLI:
|
|
19
24
|
arka-py -m core.agents.behavioral_compiler --check # drift check
|
|
20
25
|
arka-py -m core.agents.behavioral_compiler --write # (re)generate
|
|
@@ -34,18 +39,14 @@ _OUT_DIR = _ROOT / "config" / "claude-agents"
|
|
|
34
39
|
# must never clobber them.
|
|
35
40
|
_HAND_WRITTEN = {"marta-cqo", "eduardo-copy", "francisca-tech", "paulo-tech-lead"}
|
|
36
41
|
|
|
37
|
-
#
|
|
38
|
-
#
|
|
39
|
-
|
|
40
|
-
"departments/dev
|
|
41
|
-
"
|
|
42
|
-
"departments/
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
"departments/dev/agents/qa-eng.yaml",
|
|
46
|
-
"departments/dev/agents/research-assistant.yaml",
|
|
47
|
-
"departments/dev/agents/security-eng.yaml",
|
|
48
|
-
)
|
|
42
|
+
# YAML stems whose runtime prompt is one of the hand-written files above.
|
|
43
|
+
# These are skipped by the compiler and aliased in the escalation index.
|
|
44
|
+
_HAND_WRITTEN_STEMS = {
|
|
45
|
+
"tech-lead": "paulo-tech-lead", # departments/dev
|
|
46
|
+
"cqo": "marta-cqo", # departments/quality
|
|
47
|
+
"copy-director": "eduardo-copy", # departments/quality
|
|
48
|
+
"tech-director": "francisca-tech", # departments/quality
|
|
49
|
+
}
|
|
49
50
|
|
|
50
51
|
# Standard behavioral blocks imported from the frontier audit (Obsidian:
|
|
51
52
|
# "Projects/WizardingCode Internal/ArkaOS/Prompt Audit —
|
|
@@ -138,25 +139,54 @@ def _lc(text: str) -> str:
|
|
|
138
139
|
return text[0].lower() + text[1:] if text else text
|
|
139
140
|
|
|
140
141
|
|
|
142
|
+
def _catalog_yamls(base: Path) -> list[Path]:
|
|
143
|
+
"""Every agent YAML in the catalog, sub-squad subdirectories included."""
|
|
144
|
+
return sorted(
|
|
145
|
+
p for p in base.glob("departments/*/agents/**/*.yaml") if p.is_file()
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def _slug_map(base: Path) -> dict[Path, str]:
|
|
150
|
+
"""Deterministic yaml_path → output slug for the whole catalog.
|
|
151
|
+
|
|
152
|
+
Default slug is the YAML stem. When two departments share a stem
|
|
153
|
+
(e.g. ecom + landing both ship a cro-specialist), BOTH get the
|
|
154
|
+
department-prefixed form `<dept>-<stem>` — a flat output directory
|
|
155
|
+
cannot hold two files with the same name, and prefixing only the
|
|
156
|
+
second would make slugs order-dependent.
|
|
157
|
+
"""
|
|
158
|
+
yamls = [p for p in _catalog_yamls(base) if p.stem not in _HAND_WRITTEN_STEMS]
|
|
159
|
+
stem_counts: dict[str, int] = {}
|
|
160
|
+
for path in yamls:
|
|
161
|
+
stem_counts[path.stem] = stem_counts.get(path.stem, 0) + 1
|
|
162
|
+
mapping: dict[Path, str] = {}
|
|
163
|
+
for path in yamls:
|
|
164
|
+
if stem_counts[path.stem] > 1:
|
|
165
|
+
dept = path.relative_to(base / "departments").parts[0]
|
|
166
|
+
mapping[path] = f"{dept}-{path.stem}"
|
|
167
|
+
else:
|
|
168
|
+
mapping[path] = path.stem
|
|
169
|
+
return mapping
|
|
170
|
+
|
|
171
|
+
|
|
141
172
|
def build_escalation_index(base: Path) -> dict[str, str]:
|
|
142
173
|
"""Map every agent YAML id to a rendered escalation target.
|
|
143
174
|
|
|
144
|
-
Deployed subagents (
|
|
145
|
-
handle;
|
|
146
|
-
resolves to no deployed subagent is worse than no handle (QG B3).
|
|
175
|
+
Deployed subagents (catalog slugs + hand-written) render as a
|
|
176
|
+
backtick handle; anything else renders by role and name — a handle
|
|
177
|
+
that resolves to no deployed subagent is worse than no handle (QG B3).
|
|
147
178
|
"""
|
|
148
|
-
|
|
149
|
-
slug_alias = {"tech-lead": "paulo-tech-lead"}
|
|
179
|
+
slug_map = _slug_map(base)
|
|
150
180
|
index: dict[str, str] = {}
|
|
151
|
-
for yaml_path in
|
|
181
|
+
for yaml_path in _catalog_yamls(base):
|
|
152
182
|
try:
|
|
153
183
|
data = yaml.safe_load(yaml_path.read_text(encoding="utf-8"))
|
|
154
184
|
except Exception:
|
|
155
185
|
continue
|
|
156
186
|
if not isinstance(data, dict) or not data.get("id"):
|
|
157
187
|
continue
|
|
158
|
-
slug =
|
|
159
|
-
if slug
|
|
188
|
+
slug = _HAND_WRITTEN_STEMS.get(yaml_path.stem) or slug_map.get(yaml_path)
|
|
189
|
+
if slug:
|
|
160
190
|
index[data["id"]] = f"`{slug}`"
|
|
161
191
|
else:
|
|
162
192
|
role = data.get("role", yaml_path.stem)
|
|
@@ -230,17 +260,19 @@ def compile_agent(
|
|
|
230
260
|
return "\n\n".join(s for s in sections if s) + "\n"
|
|
231
261
|
|
|
232
262
|
|
|
233
|
-
def
|
|
234
|
-
"""(yaml_path, output_path) pairs for the
|
|
263
|
+
def catalog_targets(root: Path | None = None) -> list[tuple[Path, Path]]:
|
|
264
|
+
"""(yaml_path, output_path) pairs for the full agent catalog.
|
|
265
|
+
|
|
266
|
+
Skips YAMLs whose runtime prompt is hand-written (_HAND_WRITTEN_STEMS);
|
|
267
|
+
slugs come from _slug_map (department-prefixed on stem collision).
|
|
268
|
+
"""
|
|
235
269
|
base = root or _ROOT
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
yaml_path
|
|
239
|
-
slug
|
|
240
|
-
if slug in _HAND_WRITTEN
|
|
241
|
-
|
|
242
|
-
pairs.append((yaml_path, base / "config" / "claude-agents" / f"{slug}.md"))
|
|
243
|
-
return pairs
|
|
270
|
+
slug_map = _slug_map(base)
|
|
271
|
+
return [
|
|
272
|
+
(yaml_path, base / "config" / "claude-agents" / f"{slug}.md")
|
|
273
|
+
for yaml_path, slug in slug_map.items()
|
|
274
|
+
if slug not in _HAND_WRITTEN
|
|
275
|
+
]
|
|
244
276
|
|
|
245
277
|
|
|
246
278
|
def check(root: Path | None = None) -> list[str]:
|
|
@@ -248,7 +280,7 @@ def check(root: Path | None = None) -> list[str]:
|
|
|
248
280
|
base = root or _ROOT
|
|
249
281
|
index = build_escalation_index(base)
|
|
250
282
|
problems: list[str] = []
|
|
251
|
-
for yaml_path, out_path in
|
|
283
|
+
for yaml_path, out_path in catalog_targets(base):
|
|
252
284
|
expected = compile_agent(
|
|
253
285
|
load_agent_yaml(yaml_path), out_path.stem,
|
|
254
286
|
str(yaml_path.relative_to(base)), index,
|
|
@@ -263,11 +295,11 @@ def check(root: Path | None = None) -> list[str]:
|
|
|
263
295
|
|
|
264
296
|
|
|
265
297
|
def write(root: Path | None = None) -> list[Path]:
|
|
266
|
-
"""(Re)generate every
|
|
298
|
+
"""(Re)generate every catalog agent; returns written paths."""
|
|
267
299
|
base = root or _ROOT
|
|
268
300
|
index = build_escalation_index(base)
|
|
269
301
|
written: list[Path] = []
|
|
270
|
-
for yaml_path, out_path in
|
|
302
|
+
for yaml_path, out_path in catalog_targets(base):
|
|
271
303
|
content = compile_agent(
|
|
272
304
|
load_agent_yaml(yaml_path), out_path.stem,
|
|
273
305
|
str(yaml_path.relative_to(base)), index,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/core/runtime/subagent.py
CHANGED
|
@@ -1,31 +1,19 @@
|
|
|
1
|
-
"""Subagent
|
|
1
|
+
"""Subagent handoff artifact — compacted context per dispatch.
|
|
2
2
|
|
|
3
3
|
Each subagent gets a fresh context window, preventing context pollution
|
|
4
|
-
between tasks. The orchestrator
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
between tasks. The orchestrator compacts task description + relevant
|
|
5
|
+
context into a brief (~379-token) artifact and dispatches via the
|
|
6
|
+
runtime's Task tool.
|
|
7
|
+
|
|
8
|
+
Dispatch itself is orchestrated by the runtime (hooks + skills + Task
|
|
9
|
+
tool); the former Python SubagentDispatcher had no production callers
|
|
10
|
+
and was removed (see docs/adr/2026-07-09-remove-dead-orchestration.md).
|
|
11
|
+
`HandoffArtifact` stays as the measured handoff contract — consumed by
|
|
12
|
+
`scripts/bench/harness.py::bench_subagent_handoff` and
|
|
13
|
+
`core/runtime/context_compactor.py` builds its `context_summary`.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
from dataclasses import dataclass, field
|
|
17
|
-
from enum import Enum
|
|
18
|
-
from typing import Optional, Any
|
|
19
|
-
|
|
20
|
-
from core.agents.schema import Agent
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class SubagentStatus(str, Enum):
|
|
24
|
-
PENDING = "pending"
|
|
25
|
-
RUNNING = "running"
|
|
26
|
-
COMPLETED = "completed"
|
|
27
|
-
FAILED = "failed"
|
|
28
|
-
TIMEOUT = "timeout"
|
|
29
17
|
|
|
30
18
|
|
|
31
19
|
@dataclass
|
|
@@ -70,150 +58,3 @@ class HandoffArtifact:
|
|
|
70
58
|
def estimated_tokens(self) -> int:
|
|
71
59
|
"""Estimate token count of this artifact."""
|
|
72
60
|
return len(self.to_prompt().split())
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@dataclass
|
|
76
|
-
class SubagentResult:
|
|
77
|
-
"""Result returned by a subagent."""
|
|
78
|
-
task_id: str
|
|
79
|
-
agent_id: str
|
|
80
|
-
status: SubagentStatus
|
|
81
|
-
output: str = ""
|
|
82
|
-
files_modified: list[str] = field(default_factory=list)
|
|
83
|
-
tokens_used: int = 0
|
|
84
|
-
duration_ms: int = 0
|
|
85
|
-
metadata: dict[str, Any] = field(default_factory=dict)
|
|
86
|
-
|
|
87
|
-
def to_summary(self, max_tokens: int = 200) -> str:
|
|
88
|
-
"""Compact the result for the orchestrator's context.
|
|
89
|
-
|
|
90
|
-
The orchestrator doesn't need the full output, just a summary
|
|
91
|
-
to decide next steps.
|
|
92
|
-
"""
|
|
93
|
-
words = self.output.split()
|
|
94
|
-
if len(words) <= max_tokens:
|
|
95
|
-
return self.output
|
|
96
|
-
return " ".join(words[:max_tokens]) + "..."
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
class SubagentDispatcher:
|
|
100
|
-
"""Dispatches tasks to fresh subagent instances.
|
|
101
|
-
|
|
102
|
-
The dispatcher creates HandoffArtifacts from agent definitions
|
|
103
|
-
and task descriptions, then delegates to the runtime adapter
|
|
104
|
-
for actual execution.
|
|
105
|
-
|
|
106
|
-
Nesting policy: Maximum 1 level of nesting (agent -> subagent).
|
|
107
|
-
Sub-subagent dispatch is not recommended -- creates context fragmentation
|
|
108
|
-
and debugging complexity. If a subagent needs help, it should escalate
|
|
109
|
-
to its squad lead rather than spawning another subagent.
|
|
110
|
-
"""
|
|
111
|
-
|
|
112
|
-
def __init__(self) -> None:
|
|
113
|
-
self._pending: dict[str, HandoffArtifact] = {}
|
|
114
|
-
self._results: dict[str, SubagentResult] = {}
|
|
115
|
-
self._task_counter: int = 0
|
|
116
|
-
|
|
117
|
-
def create_handoff(
|
|
118
|
-
self,
|
|
119
|
-
agent: Agent,
|
|
120
|
-
task_description: str,
|
|
121
|
-
relevant_files: list[str] | None = None,
|
|
122
|
-
context_summary: str = "",
|
|
123
|
-
constraints: list[str] | None = None,
|
|
124
|
-
expected_output: str = "",
|
|
125
|
-
) -> HandoffArtifact:
|
|
126
|
-
"""Create a handoff artifact for a subagent dispatch.
|
|
127
|
-
|
|
128
|
-
Args:
|
|
129
|
-
agent: The agent to dispatch to.
|
|
130
|
-
task_description: What the subagent should do.
|
|
131
|
-
relevant_files: File paths the subagent should read.
|
|
132
|
-
context_summary: Compacted context from prior work.
|
|
133
|
-
Required when ARKAOS_STRICT_HANDOFF=1; otherwise emits a
|
|
134
|
-
warning. Use ContextCompactor.build() to construct.
|
|
135
|
-
constraints: Boundaries for the subagent.
|
|
136
|
-
expected_output: What format/content is expected back.
|
|
137
|
-
|
|
138
|
-
Returns:
|
|
139
|
-
HandoffArtifact ready for dispatch.
|
|
140
|
-
"""
|
|
141
|
-
import os, warnings
|
|
142
|
-
if not context_summary or not context_summary.strip():
|
|
143
|
-
msg = (
|
|
144
|
-
"create_handoff called without context_summary — subagent will "
|
|
145
|
-
"lack prior conversation context. Use ContextCompactor.build() "
|
|
146
|
-
"to construct one. Set ARKAOS_STRICT_HANDOFF=1 to enforce."
|
|
147
|
-
)
|
|
148
|
-
if os.environ.get("ARKAOS_STRICT_HANDOFF") == "1":
|
|
149
|
-
raise ValueError(msg)
|
|
150
|
-
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
|
151
|
-
|
|
152
|
-
self._task_counter += 1
|
|
153
|
-
task_id = f"task-{self._task_counter}"
|
|
154
|
-
|
|
155
|
-
disc_label = agent.behavioral_dna.disc.label
|
|
156
|
-
quality = []
|
|
157
|
-
if agent.tier <= 1:
|
|
158
|
-
quality.append("Enterprise-grade quality expected")
|
|
159
|
-
quality.append("Follow SOLID principles")
|
|
160
|
-
quality.append("Human-readable output, no AI patterns")
|
|
161
|
-
|
|
162
|
-
artifact = HandoffArtifact(
|
|
163
|
-
task_id=task_id,
|
|
164
|
-
task_description=task_description,
|
|
165
|
-
agent_id=agent.id,
|
|
166
|
-
agent_role=agent.role,
|
|
167
|
-
agent_disc=disc_label,
|
|
168
|
-
department=agent.department,
|
|
169
|
-
relevant_files=relevant_files or [],
|
|
170
|
-
context_summary=context_summary,
|
|
171
|
-
constraints=constraints or [],
|
|
172
|
-
expected_output=expected_output,
|
|
173
|
-
quality_criteria=quality,
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
self._pending[task_id] = artifact
|
|
177
|
-
return artifact
|
|
178
|
-
|
|
179
|
-
def record_result(self, result: SubagentResult) -> None:
|
|
180
|
-
"""Record a subagent's result."""
|
|
181
|
-
self._results[result.task_id] = result
|
|
182
|
-
self._pending.pop(result.task_id, None)
|
|
183
|
-
|
|
184
|
-
def get_result(self, task_id: str) -> Optional[SubagentResult]:
|
|
185
|
-
"""Get a subagent's result by task ID."""
|
|
186
|
-
return self._results.get(task_id)
|
|
187
|
-
|
|
188
|
-
def get_pending(self) -> list[HandoffArtifact]:
|
|
189
|
-
"""Get all pending (undispatched) handoffs."""
|
|
190
|
-
return list(self._pending.values())
|
|
191
|
-
|
|
192
|
-
def get_all_results(self) -> list[SubagentResult]:
|
|
193
|
-
"""Get all collected results."""
|
|
194
|
-
return list(self._results.values())
|
|
195
|
-
|
|
196
|
-
@property
|
|
197
|
-
def pending_count(self) -> int:
|
|
198
|
-
return len(self._pending)
|
|
199
|
-
|
|
200
|
-
@property
|
|
201
|
-
def completed_count(self) -> int:
|
|
202
|
-
return len(self._results)
|
|
203
|
-
|
|
204
|
-
def orchestrator_context_usage(self) -> dict:
|
|
205
|
-
"""Estimate how much context the orchestrator is using.
|
|
206
|
-
|
|
207
|
-
Target: 10-15% of context window for dispatch + collection.
|
|
208
|
-
"""
|
|
209
|
-
dispatch_tokens = sum(a.estimated_tokens for a in self._pending.values())
|
|
210
|
-
result_tokens = sum(
|
|
211
|
-
len(r.to_summary().split()) for r in self._results.values()
|
|
212
|
-
)
|
|
213
|
-
total = dispatch_tokens + result_tokens
|
|
214
|
-
return {
|
|
215
|
-
"dispatch_tokens": dispatch_tokens,
|
|
216
|
-
"result_summary_tokens": result_tokens,
|
|
217
|
-
"total_orchestrator_tokens": total,
|
|
218
|
-
"tasks_dispatched": self._task_counter,
|
|
219
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
"""YAML
|
|
1
|
+
"""YAML workflow definitions for ArkaOS v2.
|
|
2
2
|
|
|
3
3
|
Declarative workflows with phases, conditions, gates, and parallelization.
|
|
4
|
+
The schema/loader pair is the contract for departments/*/workflows/*.yaml;
|
|
5
|
+
execution is orchestrated by the runtime (hooks + skills + Task tool), not
|
|
6
|
+
by a Python executor (see docs/adr/2026-07-09-remove-dead-orchestration.md).
|
|
4
7
|
"""
|
|
5
8
|
|
|
6
9
|
from core.workflow.schema import Workflow, Phase, Gate, PhaseStatus
|
|
7
|
-
from core.workflow.engine import WorkflowEngine
|
|
8
10
|
from core.workflow.loader import load_workflow
|
|
9
11
|
from core.workflow.state import (
|
|
10
12
|
init_workflow as init_workflow_state,
|
|
@@ -17,7 +19,7 @@ from core.workflow.state import (
|
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
__all__ = [
|
|
20
|
-
"Workflow", "Phase", "Gate", "PhaseStatus", "
|
|
22
|
+
"Workflow", "Phase", "Gate", "PhaseStatus", "load_workflow",
|
|
21
23
|
"init_workflow_state", "get_workflow_state", "update_phase", "set_branch",
|
|
22
24
|
"add_violation", "is_phase_completed", "clear_workflow",
|
|
23
25
|
]
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brand/archetype-finder
|
|
3
3
|
description: >
|
|
4
|
-
|
|
4
|
+
Identifies a brand's archetype from the 12 Jungian archetypes and maps it to
|
|
5
|
+
personality traits, voice, and visual direction with real-world examples.
|
|
6
|
+
TRIGGER: "qual é o arquétipo da marca", "brand archetype", "define a
|
|
7
|
+
personalidade da marca", "archetype mapping", "que arquétipo somos", "/brand
|
|
8
|
+
archetype <brand>". SKIP: full identity package (strategy + verbal + visual)
|
|
9
|
+
-> brand/identity-system (archetype is one input, not the deliverable);
|
|
10
|
+
turning the personality into written tone rules -> brand/voice-guide.
|
|
5
11
|
allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
6
12
|
---
|
|
7
13
|
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brand/colors
|
|
3
3
|
description: >
|
|
4
|
-
|
|
4
|
+
Designs a brand color palette — primary, secondary, accent, and neutrals —
|
|
5
|
+
delivered with hex codes, usage guidelines, and WCAG contrast checks.
|
|
6
|
+
TRIGGER: "paleta de cores", "escolhe as cores da marca", "color palette",
|
|
7
|
+
"brand colors", "que cores combinam com esta marca", "/brand colors <mood>".
|
|
8
|
+
SKIP: palette as part of a full token and component system ->
|
|
9
|
+
brand/design-system (tokens, atomic catalog, WCAG gates for the whole UI);
|
|
10
|
+
complete brand identity from strategy up -> brand/identity-system.
|
|
5
11
|
allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
6
12
|
---
|
|
7
13
|
|