arkaos 4.6.0 → 4.7.1
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/CONSTITUTION.md +30 -16
- package/VERSION +1 -1
- package/arka/SKILL.md +26 -36
- package/arka/skills/bootstrap-agent/SKILL.md +6 -0
- package/arka/skills/checkpoint/SKILL.md +1 -1
- package/arka/skills/costs/SKILL.md +14 -5
- package/arka/skills/flow/SKILL.md +30 -15
- package/arka/skills/forge/SKILL.md +19 -15
- package/arka/skills/human-writing/SKILL.md +16 -7
- package/arka/skills/research/SKILL.md +20 -7
- package/arka/templates/skill-template.md +102 -0
- package/bin/arka-py.ps1 +9 -2
- package/config/claude-agents/architect.md +51 -0
- package/config/claude-agents/backend-dev.md +51 -0
- package/config/claude-agents/dba.md +51 -0
- package/config/claude-agents/devops-eng.md +51 -0
- package/config/claude-agents/eduardo-copy.md +14 -7
- package/config/claude-agents/francisca-tech.md +24 -6
- package/config/claude-agents/frontend-dev.md +51 -0
- package/config/claude-agents/marta-cqo.md +28 -8
- package/config/claude-agents/qa-eng.md +51 -0
- package/config/claude-agents/research-assistant.md +50 -0
- package/config/claude-agents/security-eng.md +51 -0
- package/config/constitution.yaml +127 -88
- package/config/hooks/session-start.ps1 +3 -1
- package/config/hooks/session-start.sh +3 -1
- package/config/hooks/user-prompt-submit-v2.sh +4 -11
- package/config/hooks/user-prompt-submit.ps1 +4 -7
- package/config/hooks/user-prompt-submit.sh +8 -1
- package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
- package/core/agents/behavioral_compiler.py +294 -0
- package/core/budget/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/budget/__pycache__/manager.cpython-314.pyc +0 -0
- package/core/budget/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/complexity.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/handoff.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/orchestrator.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/persistence.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/renderer.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/runtime_dispatcher.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/agent_experiences.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/closing_marker_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/closing_marker_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/phantom_action_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/phantom_action_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/qg_verdict.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/quality_api.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/quality_router.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/review_workflow.cpython-314.pyc +0 -0
- package/core/governance/closing_marker_check.py +2 -2
- package/core/governance/phantom_action_check.py +221 -0
- package/core/governance/qg_verdict.py +12 -0
- package/core/hooks/__pycache__/stop.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/stop.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/user_prompt_submit.cpython-314.pyc +0 -0
- package/core/hooks/stop.py +25 -0
- package/core/hooks/user_prompt_submit.py +15 -10
- package/core/knowledge/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/chunker.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/embedder.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/pattern_cards.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-314.pyc +0 -0
- package/core/memory/__pycache__/rehydrator.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
- package/core/runtime/claude_code.py +2 -1
- package/core/runtime/codex_cli.py +2 -0
- package/core/runtime/gemini_cli.py +2 -0
- package/core/shared/__pycache__/temp_paths.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/graph_context_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/graph_context_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/pattern_library_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/pattern_library_layer.cpython-314.pyc +0 -0
- package/core/synapse/agent_experiences_layer.py +4 -0
- package/core/synapse/engine.py +13 -2
- package/core/synapse/graph_context_layer.py +4 -0
- package/core/synapse/layers.py +28 -49
- package/core/synapse/pattern_library_layer.py +4 -0
- package/departments/brand/SKILL.md +5 -13
- package/departments/brand/skills/archetype-finder/SKILL.md +3 -11
- package/departments/brand/skills/colors/SKILL.md +3 -11
- package/departments/brand/skills/design-review/SKILL.md +11 -3
- package/departments/brand/skills/design-system/SKILL.md +3 -11
- package/departments/brand/skills/identity-system/SKILL.md +3 -11
- package/departments/brand/skills/logo-brief/SKILL.md +3 -11
- package/departments/brand/skills/mockup-generate/SKILL.md +3 -11
- package/departments/brand/skills/naming-evaluate/SKILL.md +3 -11
- package/departments/brand/skills/positioning-statement/SKILL.md +3 -11
- package/departments/brand/skills/primal-audit/SKILL.md +3 -11
- package/departments/brand/skills/ux-audit/SKILL.md +3 -11
- package/departments/brand/skills/voice-guide/SKILL.md +3 -11
- package/departments/brand/skills/wireframe/SKILL.md +3 -11
- package/departments/community/SKILL.md +4 -12
- package/departments/community/skills/ai-community/SKILL.md +3 -11
- package/departments/community/skills/betting-setup/SKILL.md +3 -11
- package/departments/community/skills/business-model/SKILL.md +3 -11
- package/departments/community/skills/content-calendar/SKILL.md +3 -11
- package/departments/community/skills/events-plan/SKILL.md +3 -11
- package/departments/community/skills/gamification-design/SKILL.md +3 -11
- package/departments/community/skills/growth-plan/SKILL.md +13 -12
- package/departments/community/skills/metrics-track/SKILL.md +3 -11
- package/departments/community/skills/moderation/SKILL.md +3 -11
- package/departments/community/skills/monetize-plan/SKILL.md +3 -11
- package/departments/community/skills/niche-setup/SKILL.md +3 -11
- package/departments/community/skills/onboarding-flow/SKILL.md +3 -11
- package/departments/community/skills/platform-select/SKILL.md +3 -11
- package/departments/content/SKILL.md +4 -12
- package/departments/content/skills/ai-workflow/SKILL.md +3 -11
- package/departments/content/skills/analytics/SKILL.md +3 -11
- package/departments/content/skills/calendar/SKILL.md +3 -11
- package/departments/content/skills/content-system/SKILL.md +3 -11
- package/departments/content/skills/monetization-plan/SKILL.md +3 -11
- package/departments/content/skills/newsletter-write/SKILL.md +3 -11
- package/departments/content/skills/platform-optimize/SKILL.md +3 -11
- package/departments/content/skills/repurpose-plan/SKILL.md +3 -11
- package/departments/content/skills/script-structure/SKILL.md +3 -11
- package/departments/content/skills/short-form/SKILL.md +3 -11
- package/departments/content/skills/thumbnail-package/SKILL.md +3 -11
- package/departments/content/skills/viral-design/SKILL.md +3 -11
- package/departments/content/skills/youtube-strategy/SKILL.md +3 -11
- package/departments/dev/SKILL.md +4 -12
- package/departments/dev/agents/security-eng.yaml +1 -1
- package/departments/dev/skills/adversarial-review/SKILL.md +10 -2
- package/departments/dev/skills/ai-assisted-dev/SKILL.md +3 -11
- package/departments/dev/skills/architecture-design/SKILL.md +3 -11
- package/departments/dev/skills/clean-code-review/SKILL.md +9 -2
- package/departments/dev/skills/code-review/SKILL.md +12 -12
- package/departments/dev/skills/db-design/SKILL.md +3 -11
- package/departments/dev/skills/ddd-model/SKILL.md +3 -11
- package/departments/dev/skills/demo-gif/SKILL.md +3 -11
- package/departments/dev/skills/deploy/SKILL.md +3 -11
- package/departments/dev/skills/devops-pipeline/SKILL.md +3 -11
- package/departments/dev/skills/docs/SKILL.md +3 -11
- package/departments/dev/skills/mcp/SKILL.md +3 -11
- package/departments/dev/skills/performance-audit/SKILL.md +3 -11
- package/departments/dev/skills/refactor-plan/SKILL.md +3 -11
- package/departments/dev/skills/research/SKILL.md +16 -12
- package/departments/dev/skills/scaffold/SKILL.md +15 -11
- package/departments/dev/skills/security-compliance/SKILL.md +3 -11
- package/departments/dev/skills/spec/SKILL.md +15 -10
- package/departments/dev/skills/stack-check/SKILL.md +3 -11
- package/departments/ecom/SKILL.md +4 -12
- package/departments/ecom/skills/analytics/SKILL.md +3 -11
- package/departments/ecom/skills/browse-competitor/SKILL.md +3 -11
- package/departments/ecom/skills/cart-recovery/SKILL.md +3 -11
- package/departments/ecom/skills/cro-optimize/SKILL.md +3 -11
- package/departments/ecom/skills/customer-journey/SKILL.md +3 -11
- package/departments/ecom/skills/fulfillment-plan/SKILL.md +3 -11
- package/departments/ecom/skills/marketplace-manage/SKILL.md +3 -11
- package/departments/ecom/skills/pricing-strategy/SKILL.md +3 -11
- package/departments/ecom/skills/product-launch/SKILL.md +3 -11
- package/departments/ecom/skills/rfm-segment/SKILL.md +3 -11
- package/departments/ecom/skills/social-commerce/SKILL.md +3 -11
- package/departments/ecom/skills/store-audit/SKILL.md +3 -11
- package/departments/ecom/skills/subscription-model/SKILL.md +3 -11
- package/departments/finance/SKILL.md +4 -12
- package/departments/finance/skills/budget-plan/SKILL.md +3 -11
- package/departments/finance/skills/cashflow-forecast/SKILL.md +3 -11
- package/departments/finance/skills/ciso-advisor/SKILL.md +3 -11
- package/departments/finance/skills/financial-model/SKILL.md +3 -11
- package/departments/finance/skills/pitch-deck/SKILL.md +3 -11
- package/departments/finance/skills/scenario-analysis/SKILL.md +3 -11
- package/departments/finance/skills/unit-economics/SKILL.md +3 -11
- package/departments/finance/skills/valuation-model/SKILL.md +3 -11
- package/departments/kb/SKILL.md +4 -12
- package/departments/kb/skills/ai-research/SKILL.md +3 -11
- package/departments/kb/skills/competitive-intel/SKILL.md +3 -11
- package/departments/kb/skills/knowledge-review/SKILL.md +3 -11
- package/departments/kb/skills/learn-content/SKILL.md +3 -11
- package/departments/kb/skills/moc-create/SKILL.md +3 -11
- package/departments/kb/skills/persona-build/SKILL.md +3 -11
- package/departments/kb/skills/research-plan/SKILL.md +3 -11
- package/departments/kb/skills/search-kb/SKILL.md +3 -11
- package/departments/kb/skills/source-evaluate/SKILL.md +3 -11
- package/departments/kb/skills/taxonomy-manage/SKILL.md +3 -11
- package/departments/kb/skills/write-as-persona/SKILL.md +3 -11
- package/departments/landing/SKILL.md +4 -12
- package/departments/landing/skills/ab-test/SKILL.md +3 -11
- package/departments/landing/skills/affiliate-bridge/SKILL.md +3 -11
- package/departments/landing/skills/awareness-diagnose/SKILL.md +3 -11
- package/departments/landing/skills/copy-framework/SKILL.md +1 -1
- package/departments/landing/skills/email-sequence/SKILL.md +3 -11
- package/departments/landing/skills/funnel-metrics/SKILL.md +3 -11
- package/departments/landing/skills/headline-write/SKILL.md +3 -11
- package/departments/landing/skills/launch-sequence/SKILL.md +3 -11
- package/departments/landing/skills/offer-create/SKILL.md +3 -11
- package/departments/landing/skills/optimize-page/SKILL.md +3 -11
- package/departments/landing/skills/page-architect/SKILL.md +3 -11
- package/departments/landing/skills/persuasion-apply/SKILL.md +3 -11
- package/departments/landing/skills/webinar-funnel/SKILL.md +3 -11
- package/departments/leadership/SKILL.md +4 -12
- package/departments/leadership/skills/change-manage/SKILL.md +3 -11
- package/departments/leadership/skills/conflict-resolve/SKILL.md +3 -11
- package/departments/leadership/skills/culture-audit/SKILL.md +3 -11
- package/departments/leadership/skills/delegation-matrix/SKILL.md +3 -11
- package/departments/leadership/skills/disc-assess/SKILL.md +3 -11
- package/departments/leadership/skills/feedback-give/SKILL.md +3 -11
- package/departments/leadership/skills/hiring-plan/SKILL.md +3 -11
- package/departments/leadership/skills/performance-review/SKILL.md +3 -11
- package/departments/marketing/SKILL.md +4 -12
- package/departments/marketing/skills/ab-test/SKILL.md +3 -11
- package/departments/marketing/skills/analytics-report/SKILL.md +3 -11
- package/departments/marketing/skills/audience-segment/SKILL.md +3 -11
- package/departments/marketing/skills/calendar-plan/SKILL.md +3 -11
- package/departments/marketing/skills/competitor-analysis/SKILL.md +3 -11
- package/departments/marketing/skills/content-audit/SKILL.md +3 -11
- package/departments/marketing/skills/email-sequence/SKILL.md +3 -11
- package/departments/marketing/skills/growth-loop/SKILL.md +15 -13
- package/departments/marketing/skills/marketing-automation/SKILL.md +3 -11
- package/departments/marketing/skills/paid-campaign/SKILL.md +3 -11
- package/departments/marketing/skills/programmatic-seo/SKILL.md +3 -11
- package/departments/marketing/skills/seo-audit/SKILL.md +3 -11
- package/departments/marketing/skills/social-strategy/SKILL.md +3 -11
- package/departments/ops/SKILL.md +4 -12
- package/departments/ops/skills/bottleneck-find/SKILL.md +3 -11
- package/departments/ops/skills/dashboard-build/SKILL.md +3 -11
- package/departments/ops/skills/gdpr-compliance/SKILL.md +3 -11
- package/departments/ops/skills/gtd-setup/SKILL.md +3 -11
- package/departments/ops/skills/integration-design/SKILL.md +3 -11
- package/departments/ops/skills/iso27001/SKILL.md +3 -11
- package/departments/ops/skills/lean-audit/SKILL.md +3 -11
- package/departments/ops/skills/metrics-dashboard/SKILL.md +3 -11
- package/departments/ops/skills/n8n-flow/SKILL.md +3 -11
- package/departments/ops/skills/quality-management/SKILL.md +3 -11
- package/departments/ops/skills/risk-management/SKILL.md +3 -11
- package/departments/ops/skills/soc2-compliance/SKILL.md +3 -11
- package/departments/ops/skills/sop-create/SKILL.md +3 -11
- package/departments/ops/skills/workflow-automate/SKILL.md +3 -11
- package/departments/ops/skills/zapier-flow/SKILL.md +3 -11
- package/departments/org/SKILL.md +4 -12
- package/departments/org/skills/compensation-plan/SKILL.md +3 -11
- package/departments/org/skills/culture-define/SKILL.md +3 -11
- package/departments/org/skills/decision-framework/SKILL.md +3 -11
- package/departments/org/skills/hiring-plan/SKILL.md +3 -11
- package/departments/org/skills/meeting-optimize/SKILL.md +3 -11
- package/departments/org/skills/onboarding-design/SKILL.md +3 -11
- package/departments/org/skills/org-design/SKILL.md +3 -11
- package/departments/org/skills/remote-setup/SKILL.md +3 -11
- package/departments/org/skills/sop-process/SKILL.md +3 -11
- package/departments/org/skills/team-assess/SKILL.md +3 -11
- package/departments/pm/SKILL.md +4 -12
- package/departments/pm/skills/backlog-groom/SKILL.md +3 -11
- package/departments/pm/skills/discovery-plan/SKILL.md +3 -11
- package/departments/pm/skills/estimate-forecast/SKILL.md +3 -11
- package/departments/pm/skills/impact-map/SKILL.md +3 -11
- package/departments/pm/skills/kanban-setup/SKILL.md +3 -11
- package/departments/pm/skills/risk-register/SKILL.md +3 -11
- package/departments/pm/skills/roadmap-build/SKILL.md +3 -11
- package/departments/pm/skills/sprint-plan/SKILL.md +3 -11
- package/departments/pm/skills/stakeholder-map/SKILL.md +3 -11
- package/departments/pm/skills/standup-run/SKILL.md +3 -11
- package/departments/pm/skills/story-write/SKILL.md +3 -11
- package/departments/quality/agents/copy-director.yaml +10 -4
- package/departments/saas/SKILL.md +4 -12
- package/departments/saas/skills/benchmark-compare/SKILL.md +3 -11
- package/departments/saas/skills/churn-analysis/SKILL.md +3 -11
- package/departments/saas/skills/customer-success/SKILL.md +3 -11
- package/departments/saas/skills/growth-plan/SKILL.md +13 -12
- package/departments/saas/skills/gtm-strategy/SKILL.md +3 -11
- package/departments/saas/skills/launch-execute/SKILL.md +3 -11
- package/departments/saas/skills/metrics-dashboard/SKILL.md +3 -11
- package/departments/saas/skills/micro-saas-stack/SKILL.md +3 -11
- package/departments/saas/skills/mvp-build/SKILL.md +3 -11
- package/departments/saas/skills/niche-evaluate/SKILL.md +13 -12
- package/departments/saas/skills/onboarding-optimize/SKILL.md +3 -11
- package/departments/saas/skills/plg-setup/SKILL.md +3 -11
- package/departments/saas/skills/pricing-strategy/SKILL.md +3 -11
- package/departments/saas/skills/validate-idea/SKILL.md +13 -13
- package/departments/sales/SKILL.md +4 -12
- package/departments/sales/skills/challenger-sell/SKILL.md +3 -11
- package/departments/sales/skills/deal-qualify/SKILL.md +3 -11
- package/departments/sales/skills/discovery-call/SKILL.md +3 -11
- package/departments/sales/skills/forecast-revenue/SKILL.md +3 -11
- package/departments/sales/skills/negotiate-plan/SKILL.md +3 -11
- package/departments/sales/skills/objection-handle/SKILL.md +3 -11
- package/departments/sales/skills/pipeline-manage/SKILL.md +3 -11
- package/departments/sales/skills/pricing-negotiate/SKILL.md +3 -11
- package/departments/strategy/SKILL.md +4 -12
- package/departments/strategy/skills/blue-ocean/SKILL.md +3 -11
- package/departments/strategy/skills/bmc/SKILL.md +3 -11
- package/departments/strategy/skills/board-advisor/SKILL.md +3 -11
- package/departments/strategy/skills/cto-advisor/SKILL.md +3 -11
- package/departments/strategy/skills/extract-data/SKILL.md +3 -11
- package/departments/strategy/skills/five-forces/SKILL.md +3 -11
- package/departments/strategy/skills/growth-strategy/SKILL.md +15 -14
- package/departments/strategy/skills/moat-analysis/SKILL.md +3 -11
- package/departments/strategy/skills/position/SKILL.md +3 -11
- package/departments/strategy/skills/scenario-plan/SKILL.md +3 -11
- package/knowledge/commands-registry.json +3006 -1676
- package/knowledge/commands-registry.json.bak +4121 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/__pycache__/migrate_skills_kb_first.cpython-313.pyc +0 -0
- package/scripts/__pycache__/synapse-bridge.cpython-314.pyc +0 -0
- package/scripts/migrate_skills_kb_first.py +41 -21
- package/scripts/tools/__pycache__/prompt_lint.cpython-313.pyc +0 -0
- package/scripts/tools/prompt_lint.py +276 -0
|
@@ -50,13 +50,11 @@ _CACHE_DIR = arkaos_temp_dir("arkaos-context-cache")
|
|
|
50
50
|
_CACHE_TTL = 300 # Constitution cache: 5 minutes
|
|
51
51
|
|
|
52
52
|
_L0_FALLBACK = (
|
|
53
|
-
"[Constitution] NON-NEGOTIABLE: branch-isolation,
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"conventional-commits, test-coverage, pattern-matching, "
|
|
59
|
-
"actionable-output, memory-persistence"
|
|
53
|
+
"[Constitution] NON-NEGOTIABLE: branch-isolation, security-gate, "
|
|
54
|
+
"mandatory-qa, evidence-flow, arkaos-not-yes-man, excellence-mandate "
|
|
55
|
+
"| QUALITY-GATE: marta-cqo, eduardo-copy, francisca-tech-ux | "
|
|
56
|
+
"MUST (28) incl.: squad-routing, spec-driven, conventional-commits, "
|
|
57
|
+
"test-coverage, subagent-discipline, persona-vs-artifact"
|
|
60
58
|
)
|
|
61
59
|
|
|
62
60
|
_ROUTE_REMINDER = """
|
|
@@ -72,7 +70,7 @@ flow applies (constitution rule evidence-flow; source arka/skills/flow/SKILL.md)
|
|
|
72
70
|
G1 CONTEXT ([arka:routing] + grounding) -> G2 PLAN (explicit approval) ->
|
|
73
71
|
G3 EXECUTE (real test run + exit 0 on record) -> G4 REVIEW (executable checks).
|
|
74
72
|
Emit [arka:gate:N] at each gate start. No writes before G2 approval.
|
|
75
|
-
Trivial bypass: [arka:trivial] <reason
|
|
73
|
+
Trivial bypass: [arka:trivial] <reason> for a single-file edit under 10 lines."""
|
|
76
74
|
|
|
77
75
|
# Keep in sync with ARKA_WF_VERB_PATTERN in _lib/workflow-classifier.sh.
|
|
78
76
|
_WF_VERB_PATTERN = (
|
|
@@ -533,8 +531,15 @@ def main(stdin_json: dict | None = None, raw: str = "") -> int:
|
|
|
533
531
|
except OSError:
|
|
534
532
|
pass
|
|
535
533
|
|
|
536
|
-
|
|
537
|
-
|
|
534
|
+
# Claude Code sends the user's text under "prompt" (UserPromptSubmit
|
|
535
|
+
# hook schema); "userInput"/"message" cover other runtimes. Missing
|
|
536
|
+
# "prompt" here meant the raw JSON line fell through as user_input,
|
|
537
|
+
# so L1/L5/L2.5 computed on JSON garbage every turn (found 2026-07-09
|
|
538
|
+
# by the un-swallowed orchestrator bats test).
|
|
539
|
+
user_input = (
|
|
540
|
+
get_str(stdin_json, "prompt")
|
|
541
|
+
or get_str(stdin_json, "userInput")
|
|
542
|
+
or get_str(stdin_json, "message")
|
|
538
543
|
)
|
|
539
544
|
session_id = get_str(stdin_json, "session_id")
|
|
540
545
|
effort_level = get_str(stdin_json, "effort", "level") or os.environ.get(
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -152,7 +152,8 @@ def _run_claude_cli(cmd: list[str]) -> subprocess.CompletedProcess:
|
|
|
152
152
|
|
|
153
153
|
try:
|
|
154
154
|
return subprocess.run(
|
|
155
|
-
cmd, capture_output=True, text=True,
|
|
155
|
+
cmd, capture_output=True, text=True, encoding="utf-8",
|
|
156
|
+
errors="replace", timeout=60, check=False
|
|
156
157
|
)
|
|
157
158
|
except subprocess.TimeoutExpired as exc:
|
|
158
159
|
raise LLMUnavailable("claude CLI timed out after 60s") from exc
|
|
@@ -170,6 +170,8 @@ def _run_codex_cli(cmd: list[str]) -> subprocess.CompletedProcess:
|
|
|
170
170
|
cmd,
|
|
171
171
|
capture_output=True,
|
|
172
172
|
text=True,
|
|
173
|
+
encoding="utf-8",
|
|
174
|
+
errors="replace",
|
|
173
175
|
timeout=_TIMEOUT_SECONDS,
|
|
174
176
|
check=False,
|
|
175
177
|
# CRITICAL: with a prompt arg AND piped stdin, codex exec
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/core/synapse/engine.py
CHANGED
|
@@ -8,6 +8,7 @@ Design goals:
|
|
|
8
8
|
- Relevance filtering (skip irrelevant layers)
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import hashlib
|
|
11
12
|
import time
|
|
12
13
|
from dataclasses import dataclass, field
|
|
13
14
|
from typing import Any
|
|
@@ -109,6 +110,14 @@ class SynapseEngine:
|
|
|
109
110
|
def _compute_layer(self, layer: Layer, ctx: PromptContext) -> LayerResult:
|
|
110
111
|
"""Compute a single layer with caching."""
|
|
111
112
|
cache_key = f"{layer.id}:{ctx.cwd}:{ctx.active_agent}"
|
|
113
|
+
if layer.input_sensitive:
|
|
114
|
+
# Input-dependent layers (hints, department, KB retrieval)
|
|
115
|
+
# must not serve one prompt's result to a different prompt
|
|
116
|
+
# within the TTL window.
|
|
117
|
+
digest = hashlib.sha1(
|
|
118
|
+
(ctx.user_input or "").encode("utf-8", "replace")
|
|
119
|
+
).hexdigest()[:12]
|
|
120
|
+
cache_key += f":{digest}"
|
|
112
121
|
|
|
113
122
|
# Check cache
|
|
114
123
|
if layer.cache_ttl > 0:
|
|
@@ -181,7 +190,6 @@ def create_default_engine(
|
|
|
181
190
|
BranchLayer,
|
|
182
191
|
CommandHintsLayer,
|
|
183
192
|
QualityGateLayer,
|
|
184
|
-
TimeLayer,
|
|
185
193
|
KnowledgeRetrievalLayer,
|
|
186
194
|
KBContextLayer,
|
|
187
195
|
ForgeContextLayer,
|
|
@@ -221,7 +229,10 @@ def create_default_engine(
|
|
|
221
229
|
engine.register_layer(BranchLayer())
|
|
222
230
|
engine.register_layer(CommandHintsLayer(commands=commands))
|
|
223
231
|
engine.register_layer(QualityGateLayer())
|
|
224
|
-
|
|
232
|
+
# L7 TimeLayer removed (prompt-surface P0 2026-07-08): the time-of-day tag
|
|
233
|
+
# had no consumer rule and invalidated the prompt cache at every
|
|
234
|
+
# 5h/12h/18h boundary — same rationale as the session-start hook's
|
|
235
|
+
# time-of-day removal.
|
|
225
236
|
engine.register_layer(ForgeContextLayer())
|
|
226
237
|
# L7.5 (PR4 v3.75.0) — Pattern Library injection. Surfaces prior
|
|
227
238
|
# `PatternCard`s when the user prompt has matching keywords, so
|
package/core/synapse/layers.py
CHANGED
|
@@ -74,6 +74,18 @@ class Layer(ABC):
|
|
|
74
74
|
"""Cache TTL in seconds. 0 = no caching."""
|
|
75
75
|
return 0
|
|
76
76
|
|
|
77
|
+
@property
|
|
78
|
+
def input_sensitive(self) -> bool:
|
|
79
|
+
"""True when compute() depends on ctx.user_input.
|
|
80
|
+
|
|
81
|
+
Input-sensitive layers get the prompt hashed into their cache
|
|
82
|
+
key — without it, a cached result from one prompt is served for
|
|
83
|
+
a DIFFERENT prompt within the TTL window (found 2026-07-09: L5
|
|
84
|
+
served 'hello' hints for an explicit '/dev feature' command,
|
|
85
|
+
defeating its own slash-suppression rule).
|
|
86
|
+
"""
|
|
87
|
+
return False
|
|
88
|
+
|
|
77
89
|
@property
|
|
78
90
|
def priority(self) -> int:
|
|
79
91
|
"""Layer priority (lower = computed first)."""
|
|
@@ -166,6 +178,10 @@ class DepartmentLayer(Layer):
|
|
|
166
178
|
def name(self) -> str:
|
|
167
179
|
return "Department"
|
|
168
180
|
|
|
181
|
+
@property
|
|
182
|
+
def input_sensitive(self) -> bool:
|
|
183
|
+
return True
|
|
184
|
+
|
|
169
185
|
@property
|
|
170
186
|
def priority(self) -> int:
|
|
171
187
|
return 10
|
|
@@ -392,6 +408,10 @@ class CommandHintsLayer(Layer):
|
|
|
392
408
|
def name(self) -> str:
|
|
393
409
|
return "CommandHints"
|
|
394
410
|
|
|
411
|
+
@property
|
|
412
|
+
def input_sensitive(self) -> bool:
|
|
413
|
+
return True
|
|
414
|
+
|
|
395
415
|
@property
|
|
396
416
|
def cache_ttl(self) -> int:
|
|
397
417
|
return 30
|
|
@@ -496,55 +516,6 @@ class QualityGateLayer(Layer):
|
|
|
496
516
|
)
|
|
497
517
|
|
|
498
518
|
|
|
499
|
-
# --- L7: Time Signal ---
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
class TimeLayer(Layer):
|
|
503
|
-
"""L7: Time-of-day signal for context-aware behavior."""
|
|
504
|
-
|
|
505
|
-
@property
|
|
506
|
-
def id(self) -> str:
|
|
507
|
-
return "L7"
|
|
508
|
-
|
|
509
|
-
@property
|
|
510
|
-
def name(self) -> str:
|
|
511
|
-
return "Time"
|
|
512
|
-
|
|
513
|
-
@property
|
|
514
|
-
def cache_ttl(self) -> int:
|
|
515
|
-
# 1 hour — time-of-day period only changes at 5/12/18 boundaries.
|
|
516
|
-
# Cache bucket drift of up to 1h is acceptable for a low-signal tag
|
|
517
|
-
# and dramatically improves prompt-cache hit rate.
|
|
518
|
-
return 3600
|
|
519
|
-
|
|
520
|
-
@property
|
|
521
|
-
def priority(self) -> int:
|
|
522
|
-
return 70
|
|
523
|
-
|
|
524
|
-
def compute(self, ctx: PromptContext) -> LayerResult:
|
|
525
|
-
start = time.time()
|
|
526
|
-
import datetime
|
|
527
|
-
|
|
528
|
-
hour = datetime.datetime.now().hour
|
|
529
|
-
if 5 <= hour < 12:
|
|
530
|
-
period = "morning"
|
|
531
|
-
elif 12 <= hour < 18:
|
|
532
|
-
period = "afternoon"
|
|
533
|
-
else:
|
|
534
|
-
period = "evening"
|
|
535
|
-
|
|
536
|
-
tag = f"[time:{period}]"
|
|
537
|
-
ms = int((time.time() - start) * 1000)
|
|
538
|
-
return LayerResult(
|
|
539
|
-
layer_id=self.id,
|
|
540
|
-
tag=tag,
|
|
541
|
-
content=period,
|
|
542
|
-
tokens_est=1,
|
|
543
|
-
compute_ms=ms,
|
|
544
|
-
cached=False,
|
|
545
|
-
)
|
|
546
|
-
|
|
547
|
-
|
|
548
519
|
# --- L3.5: Knowledge Retrieval ---
|
|
549
520
|
|
|
550
521
|
|
|
@@ -571,6 +542,10 @@ class KnowledgeRetrievalLayer(Layer):
|
|
|
571
542
|
def name(self) -> str:
|
|
572
543
|
return "KnowledgeRetrieval"
|
|
573
544
|
|
|
545
|
+
@property
|
|
546
|
+
def input_sensitive(self) -> bool:
|
|
547
|
+
return True
|
|
548
|
+
|
|
574
549
|
@property
|
|
575
550
|
def cache_ttl(self) -> int:
|
|
576
551
|
return 30
|
|
@@ -1076,6 +1051,10 @@ class KBContextLayer(Layer):
|
|
|
1076
1051
|
def name(self) -> str:
|
|
1077
1052
|
return "KBContext"
|
|
1078
1053
|
|
|
1054
|
+
@property
|
|
1055
|
+
def input_sensitive(self) -> bool:
|
|
1056
|
+
return True
|
|
1057
|
+
|
|
1079
1058
|
@property
|
|
1080
1059
|
def cache_ttl(self) -> int:
|
|
1081
1060
|
return 0
|
|
@@ -8,17 +8,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
<!-- arka:kb-first-prefix begin -->
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
16
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
17
|
-
3. Only after (1) and (2) may external tools run.
|
|
18
|
-
|
|
19
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
20
|
-
treat them as your default source. External research supplements, it
|
|
21
|
-
does not replace the vault.
|
|
11
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
12
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
13
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
22
14
|
<!-- arka:kb-first-prefix end -->
|
|
23
15
|
|
|
24
16
|
# Brand & Design Department — ArkaOS v2
|
|
@@ -52,7 +44,7 @@ does not replace the vault.
|
|
|
52
44
|
| **Isabel** | Visual Designer | 2 | I+S | Colors, logos, mockups, visual assets |
|
|
53
45
|
| **Sofia D.** | UX/UI Designer | 2 | C+I | Wireframes, usability, accessibility |
|
|
54
46
|
|
|
55
|
-
## Brand Creation Method (
|
|
47
|
+
## Brand Creation Method (MUST: strategy before visuals)
|
|
56
48
|
|
|
57
49
|
```
|
|
58
50
|
Level 1 — FOUNDATION (Mateus leads)
|
|
@@ -103,7 +95,7 @@ Level 4 — DELIVERY (Valentina leads)
|
|
|
103
95
|
When dispatching subagent work via the Task tool, include the `model` parameter from the target agent's YAML `model:` field:
|
|
104
96
|
|
|
105
97
|
- Agent YAMLs at `departments/*/agents/*.yaml` have `model: opus | sonnet | haiku`
|
|
106
|
-
- Quality Gate dispatch
|
|
98
|
+
- Quality Gate dispatch model: constitution `quality_gate.model_policy` (single source — best-available via Model Fabric; veto is model-independent)
|
|
107
99
|
- Default to `sonnet` if the agent YAML has no `model` field
|
|
108
100
|
- Mechanical tasks (commit messages, routing, keyword extraction) use `model: haiku`
|
|
109
101
|
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Archetype Finder — `/brand archetype <brand>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Colors — `/brand colors <mood>`
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brand/design-review
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Visual review of live designs against brand guidelines — opens Figma,
|
|
5
|
+
Sketch, or Canva desktop via Computer Use, screenshots each artboard, and
|
|
6
|
+
annotates palette, typography, spacing, and logo deviations. Requires
|
|
7
|
+
Computer Use (/mcp -> computer-use). TRIGGER: "/brand design-review",
|
|
8
|
+
"design review", "visual review", "revê o design", "compara com o
|
|
9
|
+
brandbook", "está on-brand?", "visual QA", "UI review" of mockups or
|
|
10
|
+
screenshots, design file paths (*.fig, *.sketch, Canva links). SKIP:
|
|
11
|
+
reviewing the CODE behind a UI (components, CSS, diffs, PRs) ->
|
|
12
|
+
dev/code-review wins; SOLID/style sweep of frontend code ->
|
|
13
|
+
dev/clean-code-review wins; trying to break flows or find abuse vectors ->
|
|
14
|
+
dev/adversarial-review wins.
|
|
7
15
|
allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent]
|
|
8
16
|
---
|
|
9
17
|
|
|
@@ -7,17 +7,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
<!-- arka:kb-first-prefix begin -->
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
15
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
16
|
-
3. Only after (1) and (2) may external tools run.
|
|
17
|
-
|
|
18
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
19
|
-
treat them as your default source. External research supplements, it
|
|
20
|
-
does not replace the vault.
|
|
10
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
11
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
12
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
21
13
|
<!-- arka:kb-first-prefix end -->
|
|
22
14
|
|
|
23
15
|
# Design System — `/brand design-system`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Identity System — `/brand identity <name>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Logo — `/brand logo <brief>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Mockup — `/brand mockup <type>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Brand Naming — `/brand naming <project>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Positioning Statement — `/brand positioning <name>`
|
|
@@ -7,17 +7,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
<!-- arka:kb-first-prefix begin -->
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
15
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
16
|
-
3. Only after (1) and (2) may external tools run.
|
|
17
|
-
|
|
18
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
19
|
-
treat them as your default source. External research supplements, it
|
|
20
|
-
does not replace the vault.
|
|
10
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
11
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
12
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
21
13
|
<!-- arka:kb-first-prefix end -->
|
|
22
14
|
|
|
23
15
|
# Primal Brand Audit — `/brand audit`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Ux Audit — `/brand ux-audit <url>`
|
|
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- arka:kb-first-prefix begin -->
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. Call `mcp__obsidian__search_notes` on the query first.
|
|
14
|
-
2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
|
|
15
|
-
3. Only after (1) and (2) may external tools run.
|
|
16
|
-
|
|
17
|
-
The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
|
|
18
|
-
treat them as your default source. External research supplements, it
|
|
19
|
-
does not replace the vault.
|
|
9
|
+
> **KB-first:** query `mcp__obsidian__search_notes` and cite
|
|
10
|
+
> `[[wikilinks]]` — or declare the gap — BEFORE any external research.
|
|
11
|
+
> Full doctrine: `arka/SKILL.md` (KB-First Research).
|
|
20
12
|
<!-- arka:kb-first-prefix end -->
|
|
21
13
|
|
|
22
14
|
# Voice Guide — `/brand voice <context>`
|