@johpaz/hive-sdk 0.1.4 → 0.1.6
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/CHANGELOG.md +129 -0
- package/README.md +78 -23
- package/bun.lock +55 -29
- package/bunfig.toml +4 -2
- package/docs/API-AGENTS.md +78 -27
- package/docs/API-CONTEXT-COMPILER.md +31 -34
- package/docs/API-TOOLS-SKILLS-CHANNELS.md +58 -22
- package/docs/HIVE-HARNESS.md +1 -1
- package/docs/INDEX.md +4 -4
- package/docs/TEMPLATE-HIVE-APP.md +10 -10
- package/package.json +17 -12
- package/packages/cli/package.json +2 -2
- package/packages/cli/src/commands/create-app.test.ts +36 -7
- package/packages/cli/src/commands/init.ts +3 -3
- package/packages/cli/src/commands/run.ts +1 -1
- package/packages/cli/src/commands/test.ts +37 -25
- package/packages/cli/src/commands/trace.ts +30 -28
- package/packages/cli/templates/hive-app/.env.example +10 -2
- package/packages/cli/templates/hive-app/README.md +103 -0
- package/packages/cli/templates/hive-app/hive.config.ts +9 -3
- package/packages/cli/templates/hive-app/src/agents/coordinator.ts +8 -1
- package/packages/cli/templates/hive-app/src/main.ts +12 -19
- package/packages/core/package.json +13 -12
- package/packages/core/src/agent/acceptance-checks.ts +172 -0
- package/packages/core/src/agent/agent-catalog.ts +348 -0
- package/packages/core/src/agent/agent-loop.ts +1373 -0
- package/packages/core/src/agent/capability-search.ts +186 -0
- package/packages/core/src/agent/catalog-selector.ts +103 -0
- package/packages/core/src/agent/{Compaction.ts → compaction.ts} +86 -63
- package/packages/core/src/agent/context-compiler.ts +689 -0
- package/packages/core/src/agent/conversation-store.ts +381 -0
- package/packages/core/src/agent/curator.ts +276 -0
- package/packages/core/src/agent/delegation-runtime.ts +241 -0
- package/packages/core/src/agent/goal-runner.ts +323 -0
- package/packages/core/src/agent/index.ts +17 -12
- package/packages/core/src/agent/llm-client.ts +266 -0
- package/packages/core/src/agent/llm-providers/anthropic.ts +264 -0
- package/packages/core/src/agent/llm-providers/deepseek.ts +8 -0
- package/packages/core/src/agent/{providers → llm-providers}/gemini.ts +98 -60
- package/packages/core/src/agent/llm-providers/groq.ts +5 -0
- package/packages/core/src/agent/llm-providers/hiveagents.ts +253 -0
- package/packages/core/src/agent/{providers → llm-providers}/interface.ts +73 -13
- package/packages/core/src/agent/llm-providers/kimi.ts +8 -0
- package/packages/core/src/agent/llm-providers/minimax.ts +13 -0
- package/packages/core/src/agent/llm-providers/mistral.ts +5 -0
- package/packages/core/src/agent/llm-providers/modelscope.ts +5 -0
- package/packages/core/src/agent/llm-providers/nvidia.ts +5 -0
- package/packages/core/src/agent/{providers → llm-providers}/ollama.ts +31 -5
- package/packages/core/src/agent/llm-providers/openai-compat-base.ts +418 -0
- package/packages/core/src/agent/llm-providers/openai.ts +5 -0
- package/packages/core/src/agent/llm-providers/opencode-go.ts +9 -0
- package/packages/core/src/agent/llm-providers/openrouter.ts +5 -0
- package/packages/core/src/agent/llm-providers/qwen.ts +5 -0
- package/packages/core/src/agent/llm-providers/z-ai.ts +5 -0
- package/packages/core/src/agent/minimal-loadout.ts +47 -0
- package/packages/core/src/agent/playbook-selector.ts +119 -0
- package/packages/core/src/agent/{PromptBuilder.ts → prompt-builder.ts} +21 -22
- package/packages/core/src/{harness → agent}/proof-packet.ts +16 -21
- package/packages/core/src/agent/providers/index.ts +35 -16
- package/packages/core/src/agent/reflector.ts +320 -0
- package/packages/core/src/agent/routing-intent.ts +22 -0
- package/packages/core/src/{harness → agent}/run-epoch.ts +4 -3
- package/packages/core/src/{harness → agent}/run-store.ts +142 -81
- package/packages/core/src/agent/{Service.ts → service.ts} +37 -26
- package/packages/core/src/agent/skill-selector.ts +374 -0
- package/packages/core/src/agent/stuck-loop.ts +209 -0
- package/packages/core/src/agent/{selectors/ToolSelector.ts → tool-selector.ts} +188 -178
- package/packages/core/src/{ace/Tracer.ts → agent/tracer.ts} +37 -27
- package/packages/core/src/api/createAgent.test.ts +139 -27
- package/packages/core/src/api/createAgent.ts +232 -44
- package/packages/core/src/artifacts/store.ts +162 -0
- package/packages/core/src/canvas/canvas-manager.ts +161 -0
- package/packages/core/src/canvas/canvas.test.ts +8 -4
- package/packages/core/src/canvas/emitter.ts +131 -80
- package/packages/core/src/canvas/index.ts +1 -3
- package/packages/core/src/channels/base.ts +9 -1
- package/packages/core/src/channels/discord.ts +5 -4
- package/packages/core/src/channels/manager.ts +122 -30
- package/packages/core/src/channels/slack.ts +5 -4
- package/packages/core/src/channels/telegram.ts +36 -6
- package/packages/core/src/channels/webchat.ts +11 -10
- package/packages/core/src/channels/whatsapp.ts +23 -7
- package/packages/core/src/config/index.ts +13 -2
- package/packages/core/src/config/loader.ts +76 -29
- package/packages/core/src/ethics/EthicsGuard.test.ts +90 -36
- package/packages/core/src/ethics/EthicsGuard.ts +51 -47
- package/packages/core/src/events/agent-bus.ts +44 -68
- package/packages/core/src/events/channel-narration.ts +150 -0
- package/packages/core/src/events/narration.ts +82 -0
- package/packages/core/src/events/tool-narration.ts +62 -0
- package/packages/core/src/gateway/delegation-groups.ts +258 -0
- package/packages/core/src/{harness → gateway}/durable-queue.ts +102 -42
- package/packages/core/src/{harness → gateway}/job-store.ts +85 -48
- package/packages/core/src/gateway/lane-queue.ts +173 -0
- package/packages/core/src/gateway/notification-inbox.ts +57 -0
- package/packages/core/src/gateway/server.ts +1 -1
- package/packages/core/src/harness/index.ts +46 -27
- package/packages/core/src/index.ts +33 -27
- package/packages/core/src/mcp/hot-reload.ts +32 -23
- package/packages/core/src/mcp/index.ts +6 -3
- package/packages/core/src/mcp/singleton.ts +1 -4
- package/packages/core/src/mcp/tool-sync.ts +138 -0
- package/packages/core/src/memory/Scratchpad.test.ts +39 -20
- package/packages/core/src/memory/Scratchpad.ts +27 -34
- package/packages/core/src/multimodal/vision-service.ts +44 -38
- package/packages/core/src/resilience/retry.ts +95 -0
- package/packages/core/src/scheduler/CronScheduler.ts +334 -287
- package/packages/core/src/scheduler/index.ts +9 -7
- package/packages/core/src/scheduler/integration.ts +46 -26
- package/packages/core/src/scheduler/scheduler.test.ts +9 -13
- package/packages/core/src/scheduler/types.ts +7 -2
- package/packages/core/src/security/Pairing.ts +1 -1
- package/packages/core/src/skills/bundled/a2ui/a2ui_dashboard/SKILL.md +176 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_form/SKILL.md +202 -0
- package/packages/core/src/skills/bundled/a2ui/a2ui_interactive/SKILL.md +206 -0
- package/packages/core/src/skills/bundled/agents/agent_spawner/SKILL.md +173 -0
- package/packages/core/src/skills/bundled/agents/memory_manager/SKILL.md +143 -0
- package/packages/core/src/skills/bundled/agents/research_and_remember/SKILL.md +139 -0
- package/packages/core/src/skills/bundled/agents/task_orchestrator/SKILL.md +98 -0
- package/packages/core/src/skills/bundled/api/api_client/SKILL.md +132 -0
- package/packages/core/src/skills/bundled/cli/cli_pipeline/SKILL.md +135 -0
- package/packages/core/src/skills/bundled/cli/cli_safe_exec/SKILL.md +125 -0
- package/packages/core/src/skills/bundled/cli/software_engineering/SKILL.md +23 -0
- package/packages/core/src/skills/bundled/cron_manager/SKILL.md +188 -0
- package/packages/core/src/skills/bundled/cron_reminder/SKILL.md +112 -0
- package/packages/core/src/skills/bundled/filesystem/file_manager/SKILL.md +118 -0
- package/packages/core/src/skills/bundled/filesystem/file_read_and_summarize/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/filesystem/file_writer/SKILL.md +129 -0
- package/packages/core/src/skills/bundled/filesystem/workspace_file_operator/SKILL.md +22 -0
- package/packages/core/src/skills/bundled/office/office_document_manager/SKILL.md +262 -0
- package/packages/core/src/skills/bundled/search_knowledge/capability_discovery/SKILL.md +75 -0
- package/packages/core/src/skills/bundled/web/browser_automate/SKILL.md +120 -0
- package/packages/core/src/skills/bundled/web/browser_scrape/SKILL.md +109 -0
- package/packages/core/src/skills/bundled/web/web_monitor/SKILL.md +127 -0
- package/packages/core/src/skills/bundled/web/web_research/SKILL.md +119 -0
- package/packages/core/src/skills/bundled-data.generated.ts +731 -2678
- package/packages/core/src/skills/skills.test.ts +52 -11
- package/packages/core/src/{harness → storage}/boot-id.ts +5 -2
- package/packages/core/src/storage/bootstrap.ts +151 -0
- package/packages/core/src/storage/causal-events.ts +84 -0
- package/packages/core/src/storage/collections.ts +680 -0
- package/packages/core/src/storage/crypto.ts +205 -74
- package/packages/core/src/{harness/db-helpers.ts → storage/hive.ts} +63 -7
- package/packages/core/src/storage/hivedb.ts +61 -0
- package/packages/core/src/storage/index.ts +111 -18
- package/packages/core/src/storage/model-id.ts +53 -0
- package/packages/core/src/storage/onboarding.ts +540 -972
- package/packages/core/src/storage/reconcile.ts +238 -0
- package/packages/core/src/storage/seed.ts +572 -406
- package/packages/core/src/storage/usage.ts +285 -225
- package/packages/core/src/storage/user-email.ts +11 -0
- package/packages/core/src/swarm/AgentExecutor.ts +1 -1
- package/packages/core/src/swarm/EventBridge.ts +1 -1
- package/packages/core/src/swarm/index.ts +12 -9
- package/packages/core/src/tool-runtime/index.ts +146 -23
- package/packages/core/src/tool-runtime/tool-worker.ts +2 -2
- package/packages/core/src/tool-runtime/worker-tools.ts +27 -0
- package/packages/core/src/{canvas/a2ui-tools.ts → tools/a2ui/index.ts} +17 -8
- package/packages/core/src/tools/agents/get-available-models.ts +36 -54
- package/packages/core/src/tools/agents/index.ts +784 -292
- package/packages/core/src/tools/api/api-request.test.ts +164 -0
- package/packages/core/src/tools/api/api-request.ts +174 -0
- package/packages/core/src/tools/api/index.ts +16 -0
- package/packages/core/src/tools/cli/index.ts +4 -0
- package/packages/core/src/tools/core/index.ts +281 -112
- package/packages/core/src/tools/cron/index.ts +121 -124
- package/packages/core/src/tools/index.ts +63 -78
- package/packages/core/src/tools/office/office-escribir-xlsx.ts +3 -1
- package/packages/core/src/tools/types.ts +3 -1
- package/packages/core/src/tools/web/artifact-inspect.ts +23 -0
- package/packages/core/src/tools/web/browser-backend.ts +129 -0
- package/packages/core/src/tools/web/browser-screenshot.ts +26 -5
- package/packages/core/src/tools/web/browser-service.ts +80 -35
- package/packages/core/src/tools/web/browser-type.ts +3 -8
- package/packages/core/src/tools/web/index.ts +4 -4
- package/packages/core/src/tools/web/webview-backend.ts +412 -0
- package/packages/core/src/voice/index.ts +89 -63
- package/packages/core/src/workers/agent.worker.ts +2 -2
- package/packages/core/src/workers/workers.test.ts +3 -10
- package/scripts/bump-version.ts +248 -0
- package/scripts/generate-skill-bundle.ts +108 -0
- package/test/acceptance-checks.test.ts +403 -0
- package/test/agent-loop-terminal-synthesis.test.ts +32 -0
- package/test/browser-backend.test.ts +308 -0
- package/test/catalog-agents-stay-enabled.test.ts +117 -0
- package/test/causal-events.test.ts +117 -0
- package/test/compaction.test.ts +105 -0
- package/test/context-compiler.test.ts +269 -0
- package/test/curator.test.ts +130 -0
- package/test/durable-queue.test.ts +114 -0
- package/test/harness-barrel.test.ts +64 -0
- package/test/hive-helpers.test.ts +130 -0
- package/test/hivedb-search.test.ts +189 -0
- package/test/internal-turns.test.ts +166 -0
- package/test/job-idempotency.test.ts +68 -0
- package/test/job-retry-backoff.test.ts +184 -0
- package/test/job-store.test.ts +381 -0
- package/test/llm-retry.test.ts +97 -0
- package/test/memory-perf.test.ts +774 -0
- package/test/minimal-loadout.test.ts +78 -0
- package/test/model-catalog.test.ts +105 -0
- package/test/preload.ts +12 -0
- package/test/reflector.test.ts +320 -0
- package/test/retention-cap.test.ts +91 -0
- package/test/retired-capabilities-pruned.test.ts +192 -0
- package/test/run-store.test.ts +355 -0
- package/test/scratchpad.test.ts +74 -0
- package/test/secrets-durability.test.ts +119 -0
- package/test/seed-model-reseed.test.ts +155 -0
- package/test/setup-agent-seed.test.ts +264 -0
- package/test/tool-inventory.test.ts +65 -0
- package/test/tool-runtime.test.ts +258 -0
- package/test/tool-selector-runtime-tools.test.ts +117 -0
- package/test/toon.test.ts +429 -0
- package/tsconfig.json +2 -0
- package/packages/core/src/ace/Curator.ts +0 -158
- package/packages/core/src/ace/Reflector.ts +0 -200
- package/packages/core/src/ace/index.ts +0 -4
- package/packages/core/src/agent/AgentRunner.ts +0 -711
- package/packages/core/src/agent/ContextCompiler.ts +0 -567
- package/packages/core/src/agent/ContextGuard.ts +0 -91
- package/packages/core/src/agent/ConversationStore.ts +0 -254
- package/packages/core/src/agent/Hooks.ts +0 -166
- package/packages/core/src/agent/StuckLoop.ts +0 -133
- package/packages/core/src/agent/providers/LLMClient.ts +0 -149
- package/packages/core/src/agent/providers/anthropic.ts +0 -212
- package/packages/core/src/agent/providers/openai-compat.ts +0 -231
- package/packages/core/src/agent/selectors/PlaybookSelector.ts +0 -121
- package/packages/core/src/agent/selectors/SkillSelector.ts +0 -322
- package/packages/core/src/agent/selectors/index.ts +0 -6
- package/packages/core/src/auth/auth.ts +0 -121
- package/packages/core/src/auth/index.ts +0 -1
- package/packages/core/src/canvas/CanvasManager.ts +0 -390
- package/packages/core/src/canvas/canvas-tools.ts +0 -448
- package/packages/core/src/harness/collections.ts +0 -98
- package/packages/core/src/harness/goal-verifier.ts +0 -141
- package/packages/core/src/harness/harness.test.ts +0 -236
- package/packages/core/src/harness/reconcile.ts +0 -149
- package/packages/core/src/mcp/MCPToolAdapter.ts +0 -176
- package/packages/core/src/multimodal/VisionService.ts +0 -293
- package/packages/core/src/scheduler/dag/AgentExecutor.ts +0 -53
- package/packages/core/src/scheduler/dag/DAGScheduler.ts +0 -250
- package/packages/core/src/scheduler/dag/EventBridge.ts +0 -122
- package/packages/core/src/scheduler/dag/TaskGraph.ts +0 -192
- package/packages/core/src/scheduler/dag/TaskNode.ts +0 -97
- package/packages/core/src/scheduler/dag/TaskResult.ts +0 -22
- package/packages/core/src/scheduler/dag/errors.ts +0 -37
- package/packages/core/src/scheduler/dag/index.ts +0 -26
- package/packages/core/src/scheduler/dag/presets/ResearchPreset.ts +0 -97
- package/packages/core/src/scheduler/dag/strategies/ParallelStrategy.ts +0 -21
- package/packages/core/src/scheduler/dag/strategies/PriorityStrategy.ts +0 -46
- package/packages/core/src/storage/HiveDBStorage.ts +0 -64
- package/packages/core/src/storage/SQLiteStorage.ts +0 -414
- package/packages/core/src/storage/hiveSeed.ts +0 -308
- package/packages/core/src/storage/hiveStorage.test.ts +0 -38
- package/packages/core/src/storage/schema.ts +0 -689
- package/packages/core/src/storage/storage.test.ts +0 -37
- package/packages/core/src/swarm/AgentBus.ts +0 -460
- package/packages/core/src/swarm/EventBus.ts +0 -169
- package/packages/core/src/swarm/WorkerPool.ts +0 -236
- package/packages/core/src/tools/bridge-events.ts +0 -26
- package/packages/core/src/tools/canvas/index.ts +0 -375
- package/packages/core/src/tools/codebridge/index.ts +0 -342
- package/packages/core/src/tools/meeting/index.ts +0 -353
- package/packages/core/src/tools/projects/index.ts +0 -37
- package/packages/core/src/tools/projects/project-create.ts +0 -94
- package/packages/core/src/tools/projects/project-done.ts +0 -66
- package/packages/core/src/tools/projects/project-fail.ts +0 -66
- package/packages/core/src/tools/projects/project-list.ts +0 -96
- package/packages/core/src/tools/projects/project-update.ts +0 -72
- package/packages/core/src/tools/projects/task-create.ts +0 -68
- package/packages/core/src/tools/projects/task-evaluate.ts +0 -93
- package/packages/core/src/tools/projects/task-update.ts +0 -93
- package/packages/core/src/tools/voice/index.ts +0 -104
- package/packages/core/src/tools/web/api-request.test.ts +0 -170
- package/packages/core/src/tools/web/api-request.ts +0 -239
- package/test/setup-db.ts +0 -216
- /package/packages/core/src/agent/{NativeTools.ts → native-tools.ts} +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cron_manager
|
|
3
|
+
description: "Manage Hive scheduled automations. Create, list, update, pause, resume, delete, trigger, and inspect recurring or one-shot jobs."
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "⏰"
|
|
7
|
+
category: cron
|
|
8
|
+
permissions:
|
|
9
|
+
- cron_manage
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [cron.create, cron.list, cron.update, cron.delete, cron.pause, cron.resume, cron.trigger, cron.history]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "programá una tarea"
|
|
16
|
+
- "schedule task"
|
|
17
|
+
- "creá un cron"
|
|
18
|
+
- "create cron"
|
|
19
|
+
- "editá el cron"
|
|
20
|
+
- "edit cron"
|
|
21
|
+
- "eliminá el cron"
|
|
22
|
+
- "remove cron"
|
|
23
|
+
- "lista las tareas"
|
|
24
|
+
- "list cron jobs"
|
|
25
|
+
- "modificá el cron"
|
|
26
|
+
- "modify cron"
|
|
27
|
+
- "tarea recurrente"
|
|
28
|
+
- "recurring task"
|
|
29
|
+
- "todos los días"
|
|
30
|
+
- "daily"
|
|
31
|
+
- "cada semana"
|
|
32
|
+
- "weekly"
|
|
33
|
+
|
|
34
|
+
preferred_agents: []
|
|
35
|
+
|
|
36
|
+
steps:
|
|
37
|
+
- step: 1
|
|
38
|
+
action: clarify_task
|
|
39
|
+
instruction: "Ask if task is one_shot (single execution) or recurring (repeats). Get specific time and task instruction."
|
|
40
|
+
output: task_type
|
|
41
|
+
|
|
42
|
+
- step: 2
|
|
43
|
+
action: build_cron_expression
|
|
44
|
+
instruction: "For recurring: construct cron expression (minute hour day month weekday). For one_shot: get ISO datetime."
|
|
45
|
+
output: cron_expression or fire_at
|
|
46
|
+
|
|
47
|
+
- step: 3
|
|
48
|
+
action: cron.create
|
|
49
|
+
instruction: "Create new cron job with required 'task' field (instruction for the agent)"
|
|
50
|
+
params:
|
|
51
|
+
name: "Short identifier (e.g., 'daily-report')"
|
|
52
|
+
task: "REQUIRED - Natural language instruction the agent reads when triggered (e.g., 'Generate sales report and send to Telegram')"
|
|
53
|
+
task_type: "'recurring' or 'one_shot'"
|
|
54
|
+
cron_expression: "Cron expression for recurring (e.g., '0 9 * * *')"
|
|
55
|
+
fire_at: "ISO datetime for one_shot (e.g., '2026-04-20T09:00:00')"
|
|
56
|
+
channel: "Notification channel (telegram, discord, webchat)"
|
|
57
|
+
start_at: "Optional ISO datetime - start of execution window (Croner startAt)"
|
|
58
|
+
stop_at: "Optional ISO datetime - end of execution window (Croner stopAt)"
|
|
59
|
+
dom_and_dow: "0 = OR logic (default), 1 = AND logic for day-of-month + day-of-week"
|
|
60
|
+
max_runs: "Optional max executions"
|
|
61
|
+
output: cron_id
|
|
62
|
+
|
|
63
|
+
- step: 4
|
|
64
|
+
action: cron.list
|
|
65
|
+
instruction: "List all cron jobs with next execution times"
|
|
66
|
+
output: cron_jobs
|
|
67
|
+
|
|
68
|
+
rules:
|
|
69
|
+
- "ALWAYS use cron.* tools — never exec/terminal"
|
|
70
|
+
- "The 'task' field is REQUIRED and contains the instruction the agent reads when triggered"
|
|
71
|
+
- "Ask if one_shot or recurring before creating"
|
|
72
|
+
- "For one_shot: use fire_at with ISO datetime"
|
|
73
|
+
- "For daily: 'MM HH * * *'"
|
|
74
|
+
- "For weekly: 'MM HH * * N' (N=0-6, 0=Sun)"
|
|
75
|
+
- "For monthly: 'MM HH D * *' (D=1-31)"
|
|
76
|
+
- "Always show next 3 execution times after creating"
|
|
77
|
+
- "Use start_at/stop_at to limit execution time window"
|
|
78
|
+
- "Use dom_and_dow=1 to require BOTH day-of-month AND day-of-week"
|
|
79
|
+
- "To edit: ALWAYS call cron.update with task_id (get from cron.list first)"
|
|
80
|
+
|
|
81
|
+
output_format:
|
|
82
|
+
structure: markdown
|
|
83
|
+
sections:
|
|
84
|
+
- "job_name"
|
|
85
|
+
- "task_instruction"
|
|
86
|
+
- "cron_expression"
|
|
87
|
+
- "next_executions"
|
|
88
|
+
max_length: "List all jobs"
|
|
89
|
+
|
|
90
|
+
examples:
|
|
91
|
+
- user_input: "programá un recordatorio diario a las 9am"
|
|
92
|
+
expected_behavior: "cron.create({ name: 'daily-reminder', task: 'Send reminder message', task_type: 'recurring', cron_expression: '0 9 * * *', channel: 'telegram' })"
|
|
93
|
+
|
|
94
|
+
- user_input: "lista las tareas programadas"
|
|
95
|
+
expected_behavior: "cron.list({})"
|
|
96
|
+
|
|
97
|
+
- user_input: "editá el cron para que sea a las 10am"
|
|
98
|
+
expected_behavior: "cron.list() → get task_id → cron.update({ task_id: '<id>', cron_expression: '0 10 * * *' })"
|
|
99
|
+
|
|
100
|
+
- user_input: "actualizá la instrucción del cron"
|
|
101
|
+
expected_behavior: "cron.list() → get task_id → cron.update({ task_id: '<id>', task: 'New instruction for agent' })"
|
|
102
|
+
|
|
103
|
+
- user_input: "elimina el cron"
|
|
104
|
+
expected_behavior: "cron.list() → get task_id → cron.delete({ task_id: '<id>' })"
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
# Cron Manager Skill
|
|
108
|
+
|
|
109
|
+
## Cuándo se Activa
|
|
110
|
+
|
|
111
|
+
Para gestionar tareas programadas (cron jobs): crear, listar, actualizar, pausar, reanudar, eliminar, ejecutar y ver historial.
|
|
112
|
+
|
|
113
|
+
## Herramientas Disponibles
|
|
114
|
+
|
|
115
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
116
|
+
|------|----------|---------------|
|
|
117
|
+
| `cron.create` | Crear cron job | Nueva tarea |
|
|
118
|
+
| `cron.list` | Listar todos | Ver existentes |
|
|
119
|
+
| `cron.update` | Actualizar existente | Cambiar horario/instrucción |
|
|
120
|
+
| `cron.pause` | Pausar temporalmente | Sin eliminar |
|
|
121
|
+
| `cron.resume` | Reanudar pausado | Continuar ejecución |
|
|
122
|
+
| `cron.delete` | Eliminar permanentemente | Cancelar para siempre |
|
|
123
|
+
| `cron.trigger` | Ejecutar ahora | Forzar ejecución |
|
|
124
|
+
| `cron.history` | Ver historial | Ver logs de ejecuciones |
|
|
125
|
+
|
|
126
|
+
## Campos Principales
|
|
127
|
+
|
|
128
|
+
| Campo | Tipo | Descripción |
|
|
129
|
+
|-------|------|-------------|
|
|
130
|
+
| `name` | string | Identificador corto (e.g., 'daily-report') |
|
|
131
|
+
| `task` | string | **REQUERIDO** - Instrucciones para el agente al ejecutarse |
|
|
132
|
+
| `task_type` | string | 'recurring' (repite) o 'one_shot' (una vez) |
|
|
133
|
+
| `cron_expression` | string | Expresión cron (solo para recurring) |
|
|
134
|
+
| `fire_at` | string | Datetime ISO (solo para one_shot) |
|
|
135
|
+
| `channel` | string | Canal de notificación |
|
|
136
|
+
| `start_at` | string | Inicio de ventana opcional (Croner startAt) |
|
|
137
|
+
| `stop_at` | string | Fin de ventana opcional (Croner stopAt) |
|
|
138
|
+
| `dom_and_dow` | number | 0=OR (default), 1=AND (día mes + día semana) |
|
|
139
|
+
|
|
140
|
+
## Cron Expression Format
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
* * * * *
|
|
144
|
+
│ │ │ │ │
|
|
145
|
+
│ │ │ │ └── Día semana (0-6, 0=Domingo)
|
|
146
|
+
│ │ │ └──── Mes (1-12)
|
|
147
|
+
│ │ └────── Día del mes (1-31)
|
|
148
|
+
│ └──────── Hora (0-23)
|
|
149
|
+
└────────── Minuto (0-59)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Ejemplos Comunes
|
|
153
|
+
|
|
154
|
+
| Expresión | Significado |
|
|
155
|
+
|-----------|-------------|
|
|
156
|
+
| `0 9 * * *` | Diario 9:00 AM |
|
|
157
|
+
| `0 7 * * 1-5` | Lun-Vie 7:00 AM |
|
|
158
|
+
| `0 */2 * * *` | Cada 2 horas |
|
|
159
|
+
| `0 0 * * 0` | Domingos medianoche |
|
|
160
|
+
| `0 0 1 * *` | Día 1 de cada mes |
|
|
161
|
+
|
|
162
|
+
## Cómo Usar start_at / stop_at
|
|
163
|
+
|
|
164
|
+
- `start_at`: La tarea no ejecuta antes de esta fecha
|
|
165
|
+
- `stop_at`: La tarea no ejecuta después de esta fecha
|
|
166
|
+
- Formato ISO: `'2026-04-01T00:00:00'`
|
|
167
|
+
|
|
168
|
+
## Cómo Usar dom_and_dow
|
|
169
|
+
|
|
170
|
+
- `0` (default): Se ejecuta si es el día del mes O el día de semana
|
|
171
|
+
- `1`: Se ejecuta solo si es EL MISMO día del mes Y el día de semana
|
|
172
|
+
|
|
173
|
+
Ejemplo: `0 9 15 * *` con dom_and_dow=1 significa "los 15 de cada mes QUE SEA domingo"
|
|
174
|
+
|
|
175
|
+
## Workflow para Crear
|
|
176
|
+
|
|
177
|
+
1. **Preguntar** → ¿one_shot o recurring?
|
|
178
|
+
2. **Obtener** → Hora y canal de notificación
|
|
179
|
+
3. **Crear** → `cron.create` con campo `task` obligatorio
|
|
180
|
+
4. **Confirmar** → `cron.list` mostrar next runs
|
|
181
|
+
|
|
182
|
+
## Errores a Evitar
|
|
183
|
+
|
|
184
|
+
- ❌ Olvidar el campo `task` — es obligatorio
|
|
185
|
+
- ❌ Usar exec para tareas programadas
|
|
186
|
+
- ❌ No preguntar si es one_shot o recurring
|
|
187
|
+
- ❌ No mostrar próximos horarios al crear
|
|
188
|
+
- ❌ Llamar `cron.update` sin `task_id` — siempre hacer `cron.list` primero
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cron_reminder
|
|
3
|
+
description: "Schedule a reminder for yourself at a specific time. Creates a one_shot cron job that sends a notification message via your preferred channel."
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "⏰"
|
|
7
|
+
category: cron
|
|
8
|
+
permissions:
|
|
9
|
+
- cron_manage
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [cron.create, notify]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "recordame"
|
|
16
|
+
- "remind me"
|
|
17
|
+
- "recordatorio"
|
|
18
|
+
- "reminder"
|
|
19
|
+
- "alerta"
|
|
20
|
+
- "alert"
|
|
21
|
+
- "avísame"
|
|
22
|
+
- "notify me"
|
|
23
|
+
- "programá"
|
|
24
|
+
- "schedule"
|
|
25
|
+
- "para mañana"
|
|
26
|
+
- "for tomorrow"
|
|
27
|
+
- "en 30 minutos"
|
|
28
|
+
- "in 30 minutes"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: clarify_reminder
|
|
35
|
+
instruction: "Ask: What do you want to be reminded about? At what time? Via which channel?"
|
|
36
|
+
output: reminder_message, reminder_time, channel
|
|
37
|
+
|
|
38
|
+
- step: 2
|
|
39
|
+
action: build_reminder_payload
|
|
40
|
+
instruction: "Build the task payload with message and channel"
|
|
41
|
+
output: payload
|
|
42
|
+
|
|
43
|
+
- step: 3
|
|
44
|
+
action: cron.create
|
|
45
|
+
instruction: "Create one_shot cron job"
|
|
46
|
+
params:
|
|
47
|
+
name: "Short name (e.g., 'follow-up-reminder')"
|
|
48
|
+
task: "REQUIRED - The reminder message (e.g., 'Review the pending report')"
|
|
49
|
+
task_type: "one_shot"
|
|
50
|
+
fire_at: "ISO datetime (e.g., '2026-04-20T14:00:00')"
|
|
51
|
+
channel: "telegram, discord, webchat, whatsapp"
|
|
52
|
+
output: cron_id
|
|
53
|
+
|
|
54
|
+
rules:
|
|
55
|
+
- "ALWAYS use cron.create with task_type='one_shot' for reminders"
|
|
56
|
+
- "The 'task' field is REQUIRED and contains the reminder message"
|
|
57
|
+
- "fire_at must be in the future"
|
|
58
|
+
- "Use notify tool as fallback if cron fails"
|
|
59
|
+
- "Default channel is user's preferred, ask if not specified"
|
|
60
|
+
|
|
61
|
+
output_format:
|
|
62
|
+
structure: markdown
|
|
63
|
+
sections:
|
|
64
|
+
- "reminder_message"
|
|
65
|
+
- "scheduled_time"
|
|
66
|
+
- "channel"
|
|
67
|
+
max_length: "Short confirmation"
|
|
68
|
+
|
|
69
|
+
examples:
|
|
70
|
+
- user_input: "recordame revisar el informe a las 3pm"
|
|
71
|
+
expected_behavior: "cron.create({ name: 'report-reminder', task: 'Revisar el informe pendiente', task_type: 'one_shot', fire_at: '2026-04-20T15:00:00', channel: 'telegram' })"
|
|
72
|
+
|
|
73
|
+
- user_input: "avísame en 30 minutos"
|
|
74
|
+
expected_behavior: "cron.create({ name: 'quick-reminder', task: 'Revisa el email', task_type: 'one_shot', fire_at: '<30-min-from-now>', channel: 'telegram' })"
|
|
75
|
+
|
|
76
|
+
- user_input: "recordame mañana a las 9am revisar las métricas"
|
|
77
|
+
expected_behavior: "cron.create({ name: 'metrics-reminder', task: 'Revisar las métricas', task_type: 'one_shot', fire_at: '<tomorrow-9am>', channel: 'telegram' })"
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
# Cron Reminder Skill
|
|
81
|
+
|
|
82
|
+
## Cuándo se Activa
|
|
83
|
+
|
|
84
|
+
Para crear recordatorios de una sola ejecución (one_shot): "recuerdame a las 3pm", "avísame en 30 minutos", etc.
|
|
85
|
+
|
|
86
|
+
## Herramientas
|
|
87
|
+
|
|
88
|
+
| Tool | Qué hace |
|
|
89
|
+
|------|----------|
|
|
90
|
+
| `cron.create` | Crear recordatorio one_shot |
|
|
91
|
+
| `notify` | Enviar notificación directa |
|
|
92
|
+
|
|
93
|
+
## Cómo Funciona
|
|
94
|
+
|
|
95
|
+
1. **Preguntar** → ¿De qué te aviso? ¿A qué hora? ¿Por qué canal?
|
|
96
|
+
2. **Crear** → `cron.create` con `task_type: 'one_shot'` y `fire_at` en formato ISO
|
|
97
|
+
3. **Confirmar** → Mostrar hora programada
|
|
98
|
+
|
|
99
|
+
## Parámetros
|
|
100
|
+
|
|
101
|
+
| Campo | Descripción |
|
|
102
|
+
|-------|-------------|
|
|
103
|
+
| `task` | **REQUERIDO** - Mensaje del recordatorio |
|
|
104
|
+
| `task_type` | Siempre `'one_shot'` |
|
|
105
|
+
| `fire_at` | Fecha/hora ISO (ej: `'2026-04-20T15:00:00'`) |
|
|
106
|
+
| `channel` | Canal (telegram, discord, whatsapp, webchat) |
|
|
107
|
+
|
|
108
|
+
## Errores Comunes
|
|
109
|
+
|
|
110
|
+
- ❌ Olvidar el campo `task` — obligatorio para que el agente sepa qué enviar
|
|
111
|
+
- ❌ Usar expresiones cron para recordatorios (usar `fire_at` en vez de `cron_expression`)
|
|
112
|
+
- ❌ Poner `fire_at` en el pasado
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: file_manager
|
|
3
|
+
description: "Explore project structure and locate files using glob patterns and directory listing"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📁"
|
|
7
|
+
category: filesystem
|
|
8
|
+
permissions:
|
|
9
|
+
- filesystem_read
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [fs_list, fs_glob, fs_exists]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "lista los archivos"
|
|
16
|
+
- "list files"
|
|
17
|
+
- "buscá archivos"
|
|
18
|
+
- "find files"
|
|
19
|
+
- "explorá el proyecto"
|
|
20
|
+
- "explore project"
|
|
21
|
+
- "qué archivos hay"
|
|
22
|
+
- "what files exist"
|
|
23
|
+
- "buscá por patrón"
|
|
24
|
+
- "search by pattern"
|
|
25
|
+
- "existe este archivo"
|
|
26
|
+
- "file exists"
|
|
27
|
+
- "dónde está"
|
|
28
|
+
- "where is"
|
|
29
|
+
|
|
30
|
+
preferred_agents: []
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- step: 1
|
|
34
|
+
action: fs_list
|
|
35
|
+
instruction: "List directory contents to understand project structure"
|
|
36
|
+
params:
|
|
37
|
+
path: "."
|
|
38
|
+
output: directory_tree
|
|
39
|
+
|
|
40
|
+
- step: 2
|
|
41
|
+
action: fs_glob
|
|
42
|
+
instruction: "Find files matching specific pattern (e.g., **/*.ts, **/*.md)"
|
|
43
|
+
params:
|
|
44
|
+
pattern: "**/*.ts"
|
|
45
|
+
output: matching_files
|
|
46
|
+
|
|
47
|
+
- step: 3
|
|
48
|
+
action: fs_exists
|
|
49
|
+
instruction: "Verify specific file or directory exists"
|
|
50
|
+
params:
|
|
51
|
+
path: "specific/path"
|
|
52
|
+
output: exists_boolean
|
|
53
|
+
|
|
54
|
+
rules:
|
|
55
|
+
- "Use fs_list for initial exploration of unknown directories"
|
|
56
|
+
- "Use fs_glob when user specifies file type or pattern"
|
|
57
|
+
- "Always verify with fs_exists before read/edit operations"
|
|
58
|
+
- "Stay within workspace directory unless explicitly requested otherwise"
|
|
59
|
+
- "For recursive search, use ** pattern (e.g., **/*.ts finds all .ts files)"
|
|
60
|
+
|
|
61
|
+
output_format:
|
|
62
|
+
structure: markdown
|
|
63
|
+
sections:
|
|
64
|
+
- "search_type"
|
|
65
|
+
- "results"
|
|
66
|
+
- "file_count"
|
|
67
|
+
max_length: "List up to 20 files, summarize if more"
|
|
68
|
+
|
|
69
|
+
examples:
|
|
70
|
+
- user_input: "lista los archivos del proyecto"
|
|
71
|
+
expected_behavior: "fs_list({ path: '.' }) → return root directory structure"
|
|
72
|
+
|
|
73
|
+
- user_input: "buscá todos los archivos TypeScript"
|
|
74
|
+
expected_behavior: "fs_glob({ pattern: '**/*.ts' }) → return list of .ts files"
|
|
75
|
+
|
|
76
|
+
- user_input: "existe el archivo src/config.ts"
|
|
77
|
+
expected_behavior: "fs_exists({ path: 'src/config.ts' }) → return true/false"
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
# File Manager Skill
|
|
81
|
+
|
|
82
|
+
## Cuándo se Activa
|
|
83
|
+
|
|
84
|
+
Esta skill se activa cuando el usuario necesita:
|
|
85
|
+
- Explorar la estructura del proyecto
|
|
86
|
+
- Buscar archivos por extensión o patrón
|
|
87
|
+
- Verificar si existe un archivo o directorio
|
|
88
|
+
- Encontrar la ubicación de un archivo
|
|
89
|
+
|
|
90
|
+
## Herramientas Disponibles
|
|
91
|
+
|
|
92
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
93
|
+
|------|----------|---------------|
|
|
94
|
+
| `fs_list` | Lista directorios y archivos | Exploración inicial |
|
|
95
|
+
| `fs_glob` | Busca archivos por patrón wildcard | Búsqueda por extensión/patrón |
|
|
96
|
+
| `fs_exists` | Verifica existencia | Pre-check antes de operaciones |
|
|
97
|
+
|
|
98
|
+
## Workflow
|
|
99
|
+
|
|
100
|
+
1. **Explorar** → `fs_list({ path })` para estructura general
|
|
101
|
+
2. **Buscar por patrón** → `fs_glob({ pattern })` para tipos específicos
|
|
102
|
+
3. **Verificar** → `fs_exists({ path })` para confirmación
|
|
103
|
+
|
|
104
|
+
## Patrones Glob Comunes
|
|
105
|
+
|
|
106
|
+
| Patrón | Encuentra |
|
|
107
|
+
|--------|-----------|
|
|
108
|
+
| `**/*.ts` | Todos los TypeScript |
|
|
109
|
+
| `**/*.test.ts` | Solo tests |
|
|
110
|
+
| `**/*.md` | Documentación |
|
|
111
|
+
| `**/package.json` | Todos los package.json |
|
|
112
|
+
| `src/**/*.tsx` | React components en src |
|
|
113
|
+
|
|
114
|
+
## Errores a Evitar
|
|
115
|
+
|
|
116
|
+
- ❌ No verificar existencia antes de leer/editar
|
|
117
|
+
- ❌ Usar fs_list cuando se conoce el patrón (usar glob)
|
|
118
|
+
- ❌ Patrones muy amplios sin filtrado
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: file_read_and_summarize
|
|
3
|
+
description: "Read and understand file content with automatic summarization for large files"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📄"
|
|
7
|
+
category: filesystem
|
|
8
|
+
permissions:
|
|
9
|
+
- filesystem_read
|
|
10
|
+
dependencies: []
|
|
11
|
+
tools: [fs_read, fs_exists]
|
|
12
|
+
|
|
13
|
+
# Structured skill fields
|
|
14
|
+
triggers:
|
|
15
|
+
- "leé este archivo"
|
|
16
|
+
- "read this file"
|
|
17
|
+
- "mostrame el contenido"
|
|
18
|
+
- "show content"
|
|
19
|
+
- "qué dice este archivo"
|
|
20
|
+
- "resumí este archivo"
|
|
21
|
+
- "summarize this file"
|
|
22
|
+
- "entendé este código"
|
|
23
|
+
- "understand this code"
|
|
24
|
+
|
|
25
|
+
preferred_agents: []
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- step: 1
|
|
29
|
+
action: fs_exists
|
|
30
|
+
instruction: "Verify file exists before attempting to read"
|
|
31
|
+
output: exists_boolean
|
|
32
|
+
|
|
33
|
+
- step: 2
|
|
34
|
+
action: fs_read
|
|
35
|
+
instruction: "Read file content. Use offset/limit for large files (>1000 lines)"
|
|
36
|
+
params:
|
|
37
|
+
path: "file path"
|
|
38
|
+
offset: 0
|
|
39
|
+
limit: 100
|
|
40
|
+
output: file_content
|
|
41
|
+
|
|
42
|
+
- step: 3
|
|
43
|
+
action: synthesize
|
|
44
|
+
instruction: "Summarize content if file is large. Extract key information relevant to user request"
|
|
45
|
+
output: summary
|
|
46
|
+
|
|
47
|
+
rules:
|
|
48
|
+
- "Always check file exists with fs_exists before reading"
|
|
49
|
+
- "Use offset and limit for files >1000 lines to avoid context saturation"
|
|
50
|
+
- "Read in chunks for very large files — iterate with offset"
|
|
51
|
+
- "Summarize automatically for files >500 lines unless user requests full content"
|
|
52
|
+
- "Identify file type by extension and adapt summary format (code vs text vs config)"
|
|
53
|
+
|
|
54
|
+
output_format:
|
|
55
|
+
structure: markdown
|
|
56
|
+
sections:
|
|
57
|
+
- "file_path"
|
|
58
|
+
- "file_type"
|
|
59
|
+
- "line_count"
|
|
60
|
+
- "summary"
|
|
61
|
+
- "key_points"
|
|
62
|
+
max_length: "500 words for summary, full content if requested"
|
|
63
|
+
|
|
64
|
+
examples:
|
|
65
|
+
- user_input: "leé el archivo package.json"
|
|
66
|
+
expected_behavior: "Check exists → fs_read({ path: 'package.json' }) → return full content (small file)"
|
|
67
|
+
|
|
68
|
+
- user_input: "resumí el archivo src/main.ts"
|
|
69
|
+
expected_behavior: "fs_read with offset/limit → identify main exports and functions → summarize structure"
|
|
70
|
+
|
|
71
|
+
- user_input: "qué dice este archivo de configuración"
|
|
72
|
+
expected_behavior: "fs_read → parse config format → explain key settings in plain language"
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# File Read and Summarize Skill
|
|
76
|
+
|
|
77
|
+
## Cuándo se Activa
|
|
78
|
+
|
|
79
|
+
Esta skill se activa cuando el usuario necesita leer y entender el contenido de un archivo, especialmente cuando:
|
|
80
|
+
- El archivo es grande y necesita resumen
|
|
81
|
+
- Se requiere comprensión del contenido (no solo lectura)
|
|
82
|
+
- El usuario pide "qué dice", "resumí", "entendé"
|
|
83
|
+
|
|
84
|
+
## Herramientas Disponibles
|
|
85
|
+
|
|
86
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
87
|
+
|------|----------|---------------|
|
|
88
|
+
| `fs_exists` | Comprueba que el path exista | Antes de leer |
|
|
89
|
+
| `fs_read` | Lee contenido de archivo del workspace | Lectura de cualquier archivo |
|
|
90
|
+
|
|
91
|
+
## Workflow
|
|
92
|
+
|
|
93
|
+
1. **Verificar existencia** → `fs_exists({ path })`
|
|
94
|
+
2. **Leer contenido** → `fs_read({ path, offset, limit })`
|
|
95
|
+
3. **Sintetizar** → Resumir si es grande, extraer puntos clave
|
|
96
|
+
|
|
97
|
+
## Mejores Prácticas
|
|
98
|
+
|
|
99
|
+
- Para archivos >1000 líneas, usar `offset` y `limit`
|
|
100
|
+
- Identificar tipo de archivo por extensión y adaptar formato de resumen
|
|
101
|
+
- Para código: identificar funciones, clases, exports principales
|
|
102
|
+
- Para config: explicar settings clave en lenguaje simple
|
|
103
|
+
- Para texto: extraer ideas principales
|
|
104
|
+
|
|
105
|
+
## Errores a Evitar
|
|
106
|
+
|
|
107
|
+
- ❌ Leer sin verificar existencia
|
|
108
|
+
- ❌ Retornar archivo completo sin resumir si es muy grande
|
|
109
|
+
- ❌ No identificar tipo de archivo para adaptar resumen
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: file_writer
|
|
3
|
+
description: "Create, modify, and delete files with safe edit operations after required authorization"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "✍️"
|
|
7
|
+
category: filesystem
|
|
8
|
+
permissions:
|
|
9
|
+
- filesystem_read
|
|
10
|
+
- filesystem_write
|
|
11
|
+
dependencies: []
|
|
12
|
+
tools: [fs_read, fs_write, fs_edit, fs_exists]
|
|
13
|
+
|
|
14
|
+
# Structured skill fields
|
|
15
|
+
triggers:
|
|
16
|
+
- "creá un archivo"
|
|
17
|
+
- "create a file"
|
|
18
|
+
- "escribí en"
|
|
19
|
+
- "write to"
|
|
20
|
+
- "editá este archivo"
|
|
21
|
+
- "edit this file"
|
|
22
|
+
- "modificá"
|
|
23
|
+
- "modify"
|
|
24
|
+
- "eliminá el archivo"
|
|
25
|
+
- "delete file"
|
|
26
|
+
- "guardá esto"
|
|
27
|
+
- "save this"
|
|
28
|
+
- "actualizá el archivo"
|
|
29
|
+
- "update file"
|
|
30
|
+
|
|
31
|
+
preferred_agents: []
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- step: 1
|
|
35
|
+
action: fs_exists
|
|
36
|
+
instruction: "Check if file exists to determine if creating or editing"
|
|
37
|
+
output: exists_boolean
|
|
38
|
+
|
|
39
|
+
- step: 2
|
|
40
|
+
action: fs_read
|
|
41
|
+
instruction: "Read existing file to understand current structure before modifying"
|
|
42
|
+
output: current_content
|
|
43
|
+
|
|
44
|
+
- step: 3
|
|
45
|
+
action: decision_write_or_edit
|
|
46
|
+
instruction: "Choose fs_write for new files or complete rewrite, fs_edit for targeted changes"
|
|
47
|
+
output: operation_type
|
|
48
|
+
|
|
49
|
+
- step: 4
|
|
50
|
+
action: fs_write_or_edit
|
|
51
|
+
instruction: "Execute the authorized write operation with the appropriate method"
|
|
52
|
+
output: result
|
|
53
|
+
|
|
54
|
+
rules:
|
|
55
|
+
- "Always read file before editing to understand structure"
|
|
56
|
+
- "Use fs_edit for small, targeted changes (find/replace)"
|
|
57
|
+
- "Use fs_write for new files or complete rewrites"
|
|
58
|
+
- "Verify file path is within workspace unless explicitly requested otherwise"
|
|
59
|
+
- "For destructive operations, require explicit authorization before this skill runs"
|
|
60
|
+
|
|
61
|
+
output_format:
|
|
62
|
+
structure: markdown
|
|
63
|
+
sections:
|
|
64
|
+
- "operation"
|
|
65
|
+
- "file_path"
|
|
66
|
+
- "lines_changed"
|
|
67
|
+
- "summary"
|
|
68
|
+
max_length: "Brief summary of changes"
|
|
69
|
+
|
|
70
|
+
examples:
|
|
71
|
+
- user_input: "creá un archivo README.md con la descripción del proyecto"
|
|
72
|
+
expected_behavior: "fs_exists (false) → fs_write({ path: 'README.md', content: '...' })"
|
|
73
|
+
|
|
74
|
+
- user_input: "editá el package.json para agregar la dependencia lodash"
|
|
75
|
+
expected_behavior: "fs_read → fs_edit with old_string/new_string for dependencies"
|
|
76
|
+
|
|
77
|
+
- user_input: "eliminá el archivo temporal.log"
|
|
78
|
+
expected_behavior: "after explicit authorization: fs_exists → fs_delete"
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
# File Writer Skill
|
|
82
|
+
|
|
83
|
+
## Cuándo se Activa
|
|
84
|
+
|
|
85
|
+
Esta skill se activa cuando el usuario necesita:
|
|
86
|
+
- Crear nuevos archivos
|
|
87
|
+
- Modificar contenido existente
|
|
88
|
+
- Eliminar archivos
|
|
89
|
+
- Guardar cambios
|
|
90
|
+
|
|
91
|
+
## Herramientas Disponibles
|
|
92
|
+
|
|
93
|
+
| Tool | Qué hace | Cuándo usarla |
|
|
94
|
+
|------|----------|---------------|
|
|
95
|
+
| `fs_read` | Lee archivo existente | Antes de editar para entender estructura |
|
|
96
|
+
| `fs_write` | Crea o sobreescribe archivo | Archivos nuevos o reescritura completa |
|
|
97
|
+
| `fs_edit` | Edita secciones específicas | Cambios puntuales (find/replace) |
|
|
98
|
+
| `fs_exists` | Verifica existencia | Para decidir crear vs editar |
|
|
99
|
+
|
|
100
|
+
## Workflow
|
|
101
|
+
|
|
102
|
+
### Crear Archivo Nuevo
|
|
103
|
+
1. `fs_exists({ path })` → verificar no existe
|
|
104
|
+
2. `fs_write({ path, content })` → crear
|
|
105
|
+
|
|
106
|
+
### Editar Archivo Existente
|
|
107
|
+
1. `fs_exists({ path })` → verificar existe
|
|
108
|
+
2. `fs_read({ path })` → entender estructura
|
|
109
|
+
3. `fs_edit({ path, old_string, new_string })` → modificar
|
|
110
|
+
4. Ejecutar únicamente dentro del alcance autorizado por el coordinador
|
|
111
|
+
|
|
112
|
+
### Eliminar Archivo
|
|
113
|
+
1. `fs_exists({ path })` → verificar existe
|
|
114
|
+
2. Verificar que el coordinador ya obtuvo autorización explícita
|
|
115
|
+
3. `fs_delete({ path })`
|
|
116
|
+
|
|
117
|
+
## Mejores Prácticas
|
|
118
|
+
|
|
119
|
+
- **Leer antes de editar**: Nunca modificar sin entender estructura
|
|
120
|
+
- **Edit vs Write**: Usar edit para cambios pequeños, write para nuevos archivos
|
|
121
|
+
- **Respetar autorización**: las confirmaciones se gestionan previamente desde el panel interactivo
|
|
122
|
+
- **Paths seguros**: Trabajar dentro del workspace por defecto
|
|
123
|
+
|
|
124
|
+
## Errores a Evitar
|
|
125
|
+
|
|
126
|
+
- ❌ Editar sin leer primero
|
|
127
|
+
- ❌ Ampliar el alcance autorizado
|
|
128
|
+
- ❌ Eliminar sin autorización explícita previa
|
|
129
|
+
- ❌ Usar write cuando edit es suficiente
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workspace_file_operator
|
|
3
|
+
description: "Safely create, read, edit, organize, and verify files or folders inside an authorized workspace"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hive Team
|
|
6
|
+
icon: "📁"
|
|
7
|
+
category: filesystem
|
|
8
|
+
permissions: [filesystem_read, filesystem_write]
|
|
9
|
+
dependencies: []
|
|
10
|
+
tools: [fs_read, fs_write, fs_edit, fs_delete, fs_list, fs_glob, fs_exists]
|
|
11
|
+
triggers: [crear carpeta, organizar archivos, editar archivo, create folder, manage files]
|
|
12
|
+
preferred_agents: [workspace_file_operator]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Operación segura del workspace
|
|
16
|
+
|
|
17
|
+
1. Resuelve todas las rutas contra el workspace asignado.
|
|
18
|
+
2. Comprueba el estado inicial con `fs_exists`, `fs_list` o `fs_read`.
|
|
19
|
+
3. Aplica la operación mínima solicitada.
|
|
20
|
+
4. Verifica el estado final mediante readback.
|
|
21
|
+
|
|
22
|
+
Nunca accedas fuera del workspace ni declares éxito basándote solo en el resultado de una escritura.
|