@michael-joseph-miller/ant-bot 0.1.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/CHANGELOG.md +40 -0
- package/LICENSE +21 -0
- package/README.md +267 -0
- package/dist/browser-OHRD7YI3.js +524 -0
- package/dist/browser-OHRD7YI3.js.map +7 -0
- package/dist/bundled-46DUK5PG.js +133 -0
- package/dist/bundled-46DUK5PG.js.map +7 -0
- package/dist/chunk-7BOHBPB2.js +287 -0
- package/dist/chunk-7BOHBPB2.js.map +7 -0
- package/dist/chunk-AHAON6J7.js +24 -0
- package/dist/chunk-AHAON6J7.js.map +7 -0
- package/dist/chunk-DYIJTUMY.js +321 -0
- package/dist/chunk-DYIJTUMY.js.map +7 -0
- package/dist/chunk-KSQOVWP5.js +310 -0
- package/dist/chunk-KSQOVWP5.js.map +7 -0
- package/dist/chunk-Z2YT2PZN.js +64 -0
- package/dist/chunk-Z2YT2PZN.js.map +7 -0
- package/dist/index.js +1562 -0
- package/dist/index.js.map +7 -0
- package/dist/install-IY2M3OUQ.js +36 -0
- package/dist/install-IY2M3OUQ.js.map +7 -0
- package/dist/plugin-POMHVGD4.js +53 -0
- package/dist/plugin-POMHVGD4.js.map +7 -0
- package/dist/scheduler-Q7OHNGP6.js +274 -0
- package/dist/scheduler-Q7OHNGP6.js.map +7 -0
- package/dist/server.js +3016 -0
- package/dist/server.js.map +7 -0
- package/dist/skills-66WRX64H.js +17 -0
- package/dist/skills-66WRX64H.js.map +7 -0
- package/dist/skills-spec.js +172 -0
- package/dist/skills-spec.js.map +7 -0
- package/dist/tools-P5537ASX.js +148 -0
- package/dist/tools-P5537ASX.js.map +7 -0
- package/package.json +51 -0
- package/skills/README.md +69 -0
- package/skills/SPEC.md +274 -0
- package/skills/bug-repro/SKILL.md +53 -0
- package/skills/deep-research/SKILL.md +451 -0
- package/skills/deep-research/references/V6_1_improvements.md +112 -0
- package/skills/deep-research/references/completeness_review_checklist.md +25 -0
- package/skills/deep-research/references/counter_review_team_guide.md +181 -0
- package/skills/deep-research/references/enterprise_analysis_frameworks.md +135 -0
- package/skills/deep-research/references/enterprise_mode.md +99 -0
- package/skills/deep-research/references/enterprise_quality_checklist.md +160 -0
- package/skills/deep-research/references/enterprise_research_methodology.md +164 -0
- package/skills/deep-research/references/formatting_rules.md +31 -0
- package/skills/deep-research/references/quality_gates.md +77 -0
- package/skills/deep-research/references/report_template_v6.md +82 -0
- package/skills/deep-research/references/research_notes_format.md +147 -0
- package/skills/deep-research/references/research_plan_checklist.md +26 -0
- package/skills/deep-research/references/research_report_template.md +49 -0
- package/skills/deep-research/references/source_accessibility_policy.md +179 -0
- package/skills/deep-research/references/source_quality_rubric.md +28 -0
- package/skills/deep-research/references/subagent_prompt.md +116 -0
- package/skills/inbox-digest/SKILL.md +51 -0
- package/skills/skill-author/SKILL.md +92 -0
- package/skills/weekly-report/SKILL.md +49 -0
- package/web/dist/assets/index-BLQ8rPiN.js +130 -0
- package/web/dist/assets/index-IEIkG_jd.css +2 -0
- package/web/dist/index.html +13 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Source Accessibility Policy
|
|
2
|
+
|
|
3
|
+
**Version**: V6.1
|
|
4
|
+
**Purpose**: Distinguish between legitimate exclusive information advantages and circular verification traps
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## The Problem
|
|
9
|
+
|
|
10
|
+
In the "字节跳动" case study, we made a **methodology error**:
|
|
11
|
+
|
|
12
|
+
**What happened**:
|
|
13
|
+
1. User asked to research **their own company**: "字节跳动某子公司"
|
|
14
|
+
2. We accessed user's **own Spaceship account** (their private registrar)
|
|
15
|
+
3. Found 25 domains **the user already owned**
|
|
16
|
+
4. Reported back: "The company owns these 25 domains"
|
|
17
|
+
|
|
18
|
+
**Why this is wrong**:
|
|
19
|
+
- This is **circular reasoning**, not research
|
|
20
|
+
- User asked us to *discover* information about their company
|
|
21
|
+
- We instead *queried* their private data and presented it as findings
|
|
22
|
+
- It's like looking in someone's wallet to tell them how much money they have
|
|
23
|
+
|
|
24
|
+
**The real question**: Can an external investigator confirm this company exists?
|
|
25
|
+
**Answer**: No (WHOIS privacy, no public records)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Core Principle: No Circular Verification
|
|
30
|
+
|
|
31
|
+
### ❌ FORBIDDEN: Self-Verification
|
|
32
|
+
|
|
33
|
+
When researching **the user's own assets/company/identity**:
|
|
34
|
+
|
|
35
|
+
| Scenario | WRONG | RIGHT |
|
|
36
|
+
|----------|-------|-------|
|
|
37
|
+
| User's company | "I found in YOUR registrar that YOU own these domains" | "Public WHOIS shows privacy protection - ownership not externally verifiable" |
|
|
38
|
+
| User's identity | "I checked YOUR email and found YOUR address" | "Please provide address if relevant to the research" |
|
|
39
|
+
| User's property | "I accessed YOUR bank to see YOUR balance" | Not applicable to research |
|
|
40
|
+
|
|
41
|
+
**Rule**: Cannot use user's private data to "discover" what user already knows about themselves.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### ✅ ALLOWED: Exclusive Information Advantage
|
|
46
|
+
|
|
47
|
+
When researching **third parties** (competitors, markets, investments):
|
|
48
|
+
|
|
49
|
+
| Source Type | Example | Usage |
|
|
50
|
+
|-------------|---------|-------|
|
|
51
|
+
| **User's paid subscriptions** | Crunchbase Pro, PitchBook, Wind | ✅ Use to research competitors |
|
|
52
|
+
| **User's proprietary databases** | Internal CRM, industry databases | ✅ Use to research market |
|
|
53
|
+
| **User's private APIs** | Trading APIs, data feeds | ✅ Use for investment research |
|
|
54
|
+
| **User's internal documents** | Prior research, memos | ✅ Use as background for new research |
|
|
55
|
+
|
|
56
|
+
**Rule**: User's exclusive information sources are competitive advantages - USE THEM for third-party research.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## The Distinction
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Research Target: 字节跳动某子公司
|
|
64
|
+
├─ Is this the user's own company? → YES
|
|
65
|
+
├─ Can we use user's private data about it? → NO (circular)
|
|
66
|
+
└─ Must rely on: Public sources only
|
|
67
|
+
|
|
68
|
+
Research Target: 竞争对手公司 X
|
|
69
|
+
├─ Is this the user's own company? → NO
|
|
70
|
+
├─ Can we use user's Crunchbase Pro? → YES (competitive advantage)
|
|
71
|
+
└─ Can use: Public + User's exclusive sources
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Corrected Methodology
|
|
77
|
+
|
|
78
|
+
### When Researching User's Own Company
|
|
79
|
+
|
|
80
|
+
**Approach**: External investigator perspective
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
User: "Research my company 字节跳动子公司"
|
|
84
|
+
|
|
85
|
+
CORRECT RESPONSE:
|
|
86
|
+
1. Search public sources (WHOIS, web, news)
|
|
87
|
+
2. Find: Website placeholder, privacy-protected WHOIS, no news
|
|
88
|
+
3. Report: "From public perspective: minimal footprint, cannot verify ownership"
|
|
89
|
+
4. Gap: "Internal data not accessible to external investigators"
|
|
90
|
+
|
|
91
|
+
INCORRECT RESPONSE:
|
|
92
|
+
1. Access user's Spaceship account
|
|
93
|
+
2. Find: 25 domains user already knows they own
|
|
94
|
+
3. Report: "The company owns 25 domains" (user already knows this!)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### When User Provides Exclusive Sources
|
|
98
|
+
|
|
99
|
+
**Approach**: Leverage competitive advantage
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
User: "Research competitor X, I have Crunchbase Pro"
|
|
103
|
+
User: "Here's my API key: xxx"
|
|
104
|
+
|
|
105
|
+
CORRECT RESPONSE:
|
|
106
|
+
1. Use provided Crunchbase Pro API
|
|
107
|
+
2. Find: Funding history, team info not in public sources
|
|
108
|
+
3. Report: "Per Crunchbase Pro [exclusive source], X raised $Y in Series Z"
|
|
109
|
+
4. Cite: Accessibility: exclusive (user-provided)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Source Classification
|
|
115
|
+
|
|
116
|
+
### public ✅
|
|
117
|
+
- Available to any external researcher
|
|
118
|
+
- Examples: Public websites, news, SEC filings
|
|
119
|
+
|
|
120
|
+
### exclusive-user-provided ✅ (FOR THIRD-PARTY RESEARCH)
|
|
121
|
+
- User's paid subscriptions, private APIs, internal databases
|
|
122
|
+
- **USE for**: Researching competitors, markets, investments
|
|
123
|
+
- **DO NOT USE for**: Verifying user's own assets/identity
|
|
124
|
+
|
|
125
|
+
### private-user-owned ❌ (FOR SELF-RESEARCH)
|
|
126
|
+
- User's own accounts, emails, personal data
|
|
127
|
+
- **DO NOT USE**: Creates circular verification
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Information Black Box Protocol
|
|
132
|
+
|
|
133
|
+
When an entity (including user's own company) has no public footprint:
|
|
134
|
+
|
|
135
|
+
1. **Document what external researcher would find**:
|
|
136
|
+
- WHOIS: Privacy protected
|
|
137
|
+
- Web search: No results
|
|
138
|
+
- News: No coverage
|
|
139
|
+
|
|
140
|
+
2. **Report honestly**:
|
|
141
|
+
```
|
|
142
|
+
Public sources found: 0
|
|
143
|
+
External visibility: None
|
|
144
|
+
Verdict: Cannot verify from public perspective
|
|
145
|
+
Note: User may have private information not available to external investigators
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
3. **Do NOT**:
|
|
149
|
+
- Use user's private data to "fill gaps"
|
|
150
|
+
- Present user's private knowledge as "discovered evidence"
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Checklist
|
|
155
|
+
|
|
156
|
+
When starting research, determine:
|
|
157
|
+
|
|
158
|
+
1. **Who is the research target?**
|
|
159
|
+
- User's own company/asset? → Public sources ONLY
|
|
160
|
+
- Third party? → Can use user's exclusive sources
|
|
161
|
+
|
|
162
|
+
2. **Am I discovering or querying?**
|
|
163
|
+
- Discovering new info? → Research
|
|
164
|
+
- Querying user's own data? → Circular, not allowed
|
|
165
|
+
|
|
166
|
+
3. **Would this finding surprise the user?**
|
|
167
|
+
- Yes → Legitimate research
|
|
168
|
+
- No (they already know) → Probably circular verification
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Summary
|
|
173
|
+
|
|
174
|
+
| Situation | Can Use User's Private Data? | Why? |
|
|
175
|
+
|-----------|------------------------------|------|
|
|
176
|
+
| Research user's own company | ❌ NO | Circular verification |
|
|
177
|
+
| Research competitor using user's Crunchbase | ✅ YES | Competitive advantage |
|
|
178
|
+
| Research market using user's database | ✅ YES | Exclusive information |
|
|
179
|
+
| "Discover" user's own domain ownership | ❌ NO | User already knows this |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Source Quality Rubric
|
|
2
|
+
|
|
3
|
+
Classify sources into tiers and prioritize higher quality evidence.
|
|
4
|
+
|
|
5
|
+
## Tier A (Highest)
|
|
6
|
+
- Primary sources: government data, standards bodies, peer-reviewed papers
|
|
7
|
+
- Official filings: annual reports, regulatory filings, audited statements
|
|
8
|
+
- First-party datasets with transparent methodology
|
|
9
|
+
|
|
10
|
+
## Tier B (Reliable)
|
|
11
|
+
- Reputable news organizations with editorial standards
|
|
12
|
+
- Industry analyst reports with clear methodology
|
|
13
|
+
- Company technical blogs with data and disclosures
|
|
14
|
+
|
|
15
|
+
## Tier C (Use Sparingly)
|
|
16
|
+
- Opinion pieces without evidence
|
|
17
|
+
- Marketing materials without verification
|
|
18
|
+
- Aggregators without clear sourcing
|
|
19
|
+
|
|
20
|
+
## Exclusion Rules
|
|
21
|
+
- Exclude sources with no date or author
|
|
22
|
+
- Exclude sources that cannot be verified
|
|
23
|
+
- Exclude sources that are clearly outdated for the topic
|
|
24
|
+
|
|
25
|
+
## Conflict Handling
|
|
26
|
+
- Surface conflicting sources explicitly
|
|
27
|
+
- Prefer higher tier sources
|
|
28
|
+
- Note uncertainty when conflicts remain
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Subagent Prompt Template
|
|
2
|
+
|
|
3
|
+
This file defines the prompt structure sent to each research subagent.
|
|
4
|
+
The lead agent fills in the `{variables}` and dispatches.
|
|
5
|
+
|
|
6
|
+
## Prompt
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
You are a research specialist with the role: {role}.
|
|
10
|
+
|
|
11
|
+
## Your Task
|
|
12
|
+
|
|
13
|
+
{objective}
|
|
14
|
+
|
|
15
|
+
## Search Queries (start with these, adjust as needed)
|
|
16
|
+
|
|
17
|
+
1. {query_1}
|
|
18
|
+
2. {query_2}
|
|
19
|
+
3. {query_3} (optional)
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
1. Run 2-4 web searches using the queries above (and variations).
|
|
24
|
+
2. For the best 2-3 results, use web_fetch to read the full article.
|
|
25
|
+
3. For each discovered source, assign:
|
|
26
|
+
- Source-Type: official|academic|secondary-industry|journalism|community|other
|
|
27
|
+
- As Of: YYYY-MM or YYYY (publication date or last verified)
|
|
28
|
+
4. Assess each source's authority (1-10 scale).
|
|
29
|
+
5. Write ALL findings to the file: {output_path}
|
|
30
|
+
6. Record at least one explicit counter-claim candidate in `Gaps`.
|
|
31
|
+
7. Use EXACTLY the format below. Do not deviate.
|
|
32
|
+
|
|
33
|
+
## Output Format (write this to {output_path})
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
task_id: {task_id}
|
|
37
|
+
role: {role}
|
|
38
|
+
status: complete
|
|
39
|
+
sources_found: {N}
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Sources
|
|
43
|
+
|
|
44
|
+
[1] {Title} | {URL} | Source-Type: {Type} | As Of: {YYYY-MM-or-YYYY} | Authority: {score}/10
|
|
45
|
+
[2] {Title} | {URL} | Source-Type: {Type} | As Of: {YYYY-MM-or-YYYY} | Authority: {score}/10
|
|
46
|
+
...
|
|
47
|
+
|
|
48
|
+
## Findings
|
|
49
|
+
|
|
50
|
+
- {Specific fact, with source number}. [1]
|
|
51
|
+
- {Specific fact, with source number and confidence}. [2]
|
|
52
|
+
- {Another fact}. [1]
|
|
53
|
+
... (max 10 findings, each one sentence, each with source number)
|
|
54
|
+
|
|
55
|
+
## Deep Read Notes
|
|
56
|
+
|
|
57
|
+
### Source [1]: {Title}
|
|
58
|
+
Key data: {specific numbers, dates, percentages extracted from full text}
|
|
59
|
+
Key insight: {the one thing this source contributes that others don't}
|
|
60
|
+
Useful for: {which aspect of the broader research question}
|
|
61
|
+
|
|
62
|
+
### Source [2]: {Title}
|
|
63
|
+
Key data: ...
|
|
64
|
+
Key insight: ...
|
|
65
|
+
Useful for: ...
|
|
66
|
+
|
|
67
|
+
## Gaps
|
|
68
|
+
|
|
69
|
+
- {What you searched for but could NOT find}
|
|
70
|
+
- {Alternative interpretation or methodological limitation}
|
|
71
|
+
|
|
72
|
+
## END
|
|
73
|
+
|
|
74
|
+
Do not include any content after the Gaps section.
|
|
75
|
+
Do not summarize your process. Write the findings file and stop.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Depth Levels
|
|
79
|
+
|
|
80
|
+
**DEEP** — web_fetch 2-3 full articles and write detailed Deep Read Notes.
|
|
81
|
+
Use for: core tasks where specific data points and expert analysis are critical.
|
|
82
|
+
|
|
83
|
+
**SCAN** — rely mainly on search snippets, fetches at most 1 article.
|
|
84
|
+
Use for: supplementary tasks like source mapping.
|
|
85
|
+
|
|
86
|
+
## Environment-Specific Dispatch
|
|
87
|
+
|
|
88
|
+
### Claude Code
|
|
89
|
+
```bash
|
|
90
|
+
# Single task
|
|
91
|
+
claude -p "$(cat workspace/prompts/task-a.md)" \
|
|
92
|
+
--allowedTools web_search,web_fetch,write \
|
|
93
|
+
> workspace/research-notes/task-a.md
|
|
94
|
+
|
|
95
|
+
# Parallel dispatch
|
|
96
|
+
for task in a b c; do
|
|
97
|
+
claude -p "$(cat workspace/prompts/task-${task}.md)" \
|
|
98
|
+
--allowedTools web_search,web_fetch,write \
|
|
99
|
+
> workspace/research-notes/task-${task}.md &
|
|
100
|
+
done
|
|
101
|
+
wait
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Cowork
|
|
105
|
+
Spawn subagent tasks via the subagent dispatch mechanism.
|
|
106
|
+
|
|
107
|
+
### DeerFlow / OpenClaw
|
|
108
|
+
Use the `task` tool:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
task(
|
|
112
|
+
prompt=task_a_prompt,
|
|
113
|
+
tools=["web_search", "web_fetch", "write_file"],
|
|
114
|
+
output_path="workspace/research-notes/task-a.md"
|
|
115
|
+
)
|
|
116
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: inbox-digest
|
|
3
|
+
description: "Produces a since-last-time digest of what changed across the connected inbox/channels, filtered to what actually needs attention, with a proposed next step for each item."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## When to use it
|
|
7
|
+
|
|
8
|
+
Use this skill for a recurring "what happened since I last looked" summary of an inbox, channel,
|
|
9
|
+
or notification stream — a chief-of-staff-style digest. Not for answering a specific one-off
|
|
10
|
+
question about a single message; this is for a periodic sweep.
|
|
11
|
+
|
|
12
|
+
## Required inputs and access
|
|
13
|
+
|
|
14
|
+
- Read access to the inbox/channel(s) to be swept (email, chat, notifications — whichever are
|
|
15
|
+
connected).
|
|
16
|
+
- The "since" boundary: last digest's timestamp, or a stated window (e.g. "since yesterday").
|
|
17
|
+
- Optionally, a priorities/watch list to filter against — without one, use broad judgment but say
|
|
18
|
+
so in the output.
|
|
19
|
+
- If a connected source cannot be reached, exclude it explicitly rather than silently omitting it.
|
|
20
|
+
|
|
21
|
+
## Sequence of work
|
|
22
|
+
|
|
23
|
+
1. Determine the time window: since the last successful digest, or the stated window.
|
|
24
|
+
2. Pull new items from every connected source for that window.
|
|
25
|
+
3. Filter out routine/low-signal noise; keep anything that plausibly needs a decision, a reply,
|
|
26
|
+
or awareness of a change.
|
|
27
|
+
4. For each kept item: note the source, why it matters, and a proposed next step.
|
|
28
|
+
5. Group by urgency (needs a decision today / worth a look / FYI) rather than by source.
|
|
29
|
+
6. Note any source that was unreachable or partially loaded during this run.
|
|
30
|
+
|
|
31
|
+
## How to validate the result
|
|
32
|
+
|
|
33
|
+
- Every item must link back to its source message/thread — no paraphrase-only entries.
|
|
34
|
+
- The window covered must be stated explicitly (with time zone) at the top of the digest.
|
|
35
|
+
- If a source was unavailable, that must be listed under "Not checked this run" — **never present
|
|
36
|
+
a digest as complete when a source was skipped.**
|
|
37
|
+
- Confirm nothing in the digest implies an action was already taken; this skill only observes.
|
|
38
|
+
|
|
39
|
+
## What to return
|
|
40
|
+
|
|
41
|
+
A digest with: the time window covered, items grouped by urgency, each item showing source link +
|
|
42
|
+
why it matters + proposed next step, and a "Not checked this run" section for any unreachable
|
|
43
|
+
source (present even if empty).
|
|
44
|
+
|
|
45
|
+
## What requires approval
|
|
46
|
+
|
|
47
|
+
- Replying to, archiving, or otherwise modifying anything in the inbox/channels — this skill only
|
|
48
|
+
reads and reports.
|
|
49
|
+
- Sending the digest anywhere outside this conversation.
|
|
50
|
+
- Treating a proposed next step as done — every proposed step stays proposed until a human or a
|
|
51
|
+
separate, explicitly-approved action executes it.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-author
|
|
3
|
+
description: "Writes a new skill, or brings an existing one up to the Agent Skills spec, without losing any of what it already told the model to do. Use when asked to add, author, fix, lint, or rewrite a SKILL.md, when `antbot skill lint` reports violations, or when an installed skill is malformed."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## When to use it
|
|
7
|
+
|
|
8
|
+
Use this skill for any work on a skill file itself — writing a new one, repairing one the linter
|
|
9
|
+
rejects, or rewriting one that was installed from somewhere else and does not fit the spec. Not for
|
|
10
|
+
*using* a skill, and not for deciding which bot should have one; this is about the file.
|
|
11
|
+
|
|
12
|
+
The spec is `skills/SPEC.md` in the ant-bot repo. The linter is `antbot skill lint`. Between them
|
|
13
|
+
they decide whether the work is done — not your judgment about whether the file looks fine.
|
|
14
|
+
|
|
15
|
+
## Required inputs and access
|
|
16
|
+
|
|
17
|
+
- The skill directory to write or repair, and write access to it.
|
|
18
|
+
- `antbot skill lint <path>`, which needs no running daemon.
|
|
19
|
+
- For a rewrite: the **current** contents of the file, read in full before any edit. A rewrite
|
|
20
|
+
driven by a summary of the file loses whatever the summary left out.
|
|
21
|
+
- If the skill references files it does not ship (`references/…`, `scripts/…`, `assets/…`), the
|
|
22
|
+
source it was copied from. If that source cannot be found, say so — do not invent the missing
|
|
23
|
+
files or quietly delete the references to them.
|
|
24
|
+
|
|
25
|
+
## Sequence of work
|
|
26
|
+
|
|
27
|
+
**Always, before editing anything: take the behavioral inventory.** Read the whole file and list
|
|
28
|
+
every item it contains under these headings. This list is the contract the rewrite has to honor.
|
|
29
|
+
|
|
30
|
+
1. Every instruction that changes what the model does.
|
|
31
|
+
2. Every prohibition — the "never", "do not", "stop and report instead" clauses.
|
|
32
|
+
3. Every approval boundary.
|
|
33
|
+
4. Every stated output requirement or format.
|
|
34
|
+
5. Every referenced file, command, tool, or external system.
|
|
35
|
+
6. Every failure-mode rule (what to do when a source is unreachable, a step fails, data is stale).
|
|
36
|
+
|
|
37
|
+
**Then, for a new skill:**
|
|
38
|
+
|
|
39
|
+
1. Pick a directory name that is lowercase letters, digits and hyphens only — no leading, trailing
|
|
40
|
+
or doubled hyphens, 64 characters or fewer.
|
|
41
|
+
2. Write frontmatter whose `name` is *exactly* that directory name. This is not cosmetic: ant-bot
|
|
42
|
+
passes frontmatter names to the SDK as the enabled-skills filter, so a mismatch makes the skill
|
|
43
|
+
silently unavailable rather than failing loudly.
|
|
44
|
+
3. Write a `description` that says both what the skill does and when to reach for it, in under
|
|
45
|
+
1024 characters, front-loading the words a model would match on. "Helps with PDFs" is a
|
|
46
|
+
non-answer; name the triggers.
|
|
47
|
+
4. Write the body in the six sections below.
|
|
48
|
+
5. Put anything long or occasionally-needed in `references/`, scripts in `scripts/`, templates in
|
|
49
|
+
`assets/`. Keep SKILL.md itself under 500 lines — the whole file enters context the moment the
|
|
50
|
+
skill activates, while those directories are read only when needed.
|
|
51
|
+
6. Ship every file you reference. A dangling reference is worse than no reference: the model is
|
|
52
|
+
told to go read something that is not there.
|
|
53
|
+
|
|
54
|
+
**Or, for a rewrite:** make the smallest change that clears the violation.
|
|
55
|
+
|
|
56
|
+
1. Run `antbot skill lint <path>` first and fix what it names, one violation at a time.
|
|
57
|
+
2. A frontmatter fix is a frontmatter fix — do not "improve" the body while you are in there.
|
|
58
|
+
3. If the body genuinely must change (it is over length, or it instructs the model to use tooling
|
|
59
|
+
this environment does not have), move content rather than deleting it: into `references/`, or
|
|
60
|
+
into a rephrasing that keeps the same instruction. Deleting a section is a decision to report,
|
|
61
|
+
not a cleanup.
|
|
62
|
+
4. If a skill names commands or agents from another product, replace them with what this
|
|
63
|
+
environment can actually do, keeping the step's purpose intact. Do not leave a dead command
|
|
64
|
+
name in place, and do not drop the step.
|
|
65
|
+
|
|
66
|
+
## How to validate the result
|
|
67
|
+
|
|
68
|
+
- `antbot skill lint <path>` exits 0. Warnings are allowed but must be deliberate; errors are not.
|
|
69
|
+
- Walk the behavioral inventory item by item against the new file. Every item is either still
|
|
70
|
+
present, or listed in what you return as a deliberate removal with a reason. There is no third
|
|
71
|
+
category — an item you cannot find is a regression, not an oversight.
|
|
72
|
+
- Every referenced file exists at the path given.
|
|
73
|
+
- `name` matches the directory name character for character.
|
|
74
|
+
- The description would make *you* pick this skill out of a list of thirty, knowing only the
|
|
75
|
+
descriptions.
|
|
76
|
+
|
|
77
|
+
## What to return
|
|
78
|
+
|
|
79
|
+
The path to the skill, the linter output, and a short list of what changed. For a rewrite, include
|
|
80
|
+
the behavioral inventory check: what was preserved, what moved where, and anything deliberately
|
|
81
|
+
dropped with the reason. If a referenced file could not be recovered, say that plainly rather than
|
|
82
|
+
reporting success.
|
|
83
|
+
|
|
84
|
+
## What requires approval
|
|
85
|
+
|
|
86
|
+
- Deleting any instruction, prohibition, approval boundary, or output requirement from an existing
|
|
87
|
+
skill — even one that looks redundant. Propose it, do not do it.
|
|
88
|
+
- Removing a skill, or renaming its directory. A rename changes the slug bots are assigned by.
|
|
89
|
+
- Vendoring reference files from a third-party source into this repository — that is a licensing
|
|
90
|
+
decision, not a technical one.
|
|
91
|
+
- Editing a skill that is installed in the user's data directory rather than in the project's
|
|
92
|
+
`skills/` directory. Those are the user's own copies; ant-bot deliberately never overwrites them.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weekly-report
|
|
3
|
+
description: "Builds a Monday-morning status report from the current account/project data and posts it as a linked, reviewable document."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## When to use it
|
|
7
|
+
|
|
8
|
+
Use this skill when asked for a recurring or one-off status report that summarizes the current
|
|
9
|
+
state of a set of accounts, projects, or metrics for a stakeholder audience — e.g. "give me this
|
|
10
|
+
week's report" or a Monday-8am routine. Not for ad-hoc one-line answers; this is for a structured,
|
|
11
|
+
shareable document.
|
|
12
|
+
|
|
13
|
+
## Required inputs and access
|
|
14
|
+
|
|
15
|
+
- The source system(s) that hold the data being reported on (read-only access is enough).
|
|
16
|
+
- The list or filter defining scope (e.g. "accounts owned by X", "projects tagged Q3").
|
|
17
|
+
- The report destination: this conversation, or a specific `/workspace` folder.
|
|
18
|
+
- If any required source is not connected or not reachable, say so explicitly rather than
|
|
19
|
+
guessing at scope.
|
|
20
|
+
|
|
21
|
+
## Sequence of work
|
|
22
|
+
|
|
23
|
+
1. Confirm the reporting window (default: since last Monday) and the scope filter.
|
|
24
|
+
2. Pull current data from the source system(s) — do not reuse a previous report's numbers.
|
|
25
|
+
3. Group findings under clear headings (e.g. Highlights, Risks, Needs a decision, Metrics).
|
|
26
|
+
4. For every claim, attach a source link, a screenshot, or a direct quote — no unsourced claims.
|
|
27
|
+
5. Draft the report as a markdown file in `/workspace/reports/<date>-weekly-report.md`.
|
|
28
|
+
6. Re-read the draft once for internal consistency before returning it.
|
|
29
|
+
|
|
30
|
+
## How to validate the result
|
|
31
|
+
|
|
32
|
+
- Every number and claim in the report must trace to a source pulled in this same run.
|
|
33
|
+
- If a source system was unreachable or a data pull failed partway through, the report must say
|
|
34
|
+
so explicitly in a "Could not verify" section — **never fill a gap with last week's numbers.**
|
|
35
|
+
- Check that the reporting window and scope match what was requested.
|
|
36
|
+
|
|
37
|
+
## What to return
|
|
38
|
+
|
|
39
|
+
A single markdown report with: a one-paragraph summary, findings grouped under headings with
|
|
40
|
+
source links, a "Could not verify" section (even if empty, say so), and the exact time window
|
|
41
|
+
covered. Post the file as a card in the conversation; do not create a second copy on a re-run —
|
|
42
|
+
overwrite/version the same report file for that period.
|
|
43
|
+
|
|
44
|
+
## What requires approval
|
|
45
|
+
|
|
46
|
+
- Sending the report to anyone outside this conversation (email, Slack, or any other channel).
|
|
47
|
+
- Publishing the report anywhere public-facing.
|
|
48
|
+
- Any change to the underlying source systems — this skill is read-only and reports; it never
|
|
49
|
+
edits records, tickets, or budgets on your behalf.
|