@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.
Files changed (60) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +267 -0
  4. package/dist/browser-OHRD7YI3.js +524 -0
  5. package/dist/browser-OHRD7YI3.js.map +7 -0
  6. package/dist/bundled-46DUK5PG.js +133 -0
  7. package/dist/bundled-46DUK5PG.js.map +7 -0
  8. package/dist/chunk-7BOHBPB2.js +287 -0
  9. package/dist/chunk-7BOHBPB2.js.map +7 -0
  10. package/dist/chunk-AHAON6J7.js +24 -0
  11. package/dist/chunk-AHAON6J7.js.map +7 -0
  12. package/dist/chunk-DYIJTUMY.js +321 -0
  13. package/dist/chunk-DYIJTUMY.js.map +7 -0
  14. package/dist/chunk-KSQOVWP5.js +310 -0
  15. package/dist/chunk-KSQOVWP5.js.map +7 -0
  16. package/dist/chunk-Z2YT2PZN.js +64 -0
  17. package/dist/chunk-Z2YT2PZN.js.map +7 -0
  18. package/dist/index.js +1562 -0
  19. package/dist/index.js.map +7 -0
  20. package/dist/install-IY2M3OUQ.js +36 -0
  21. package/dist/install-IY2M3OUQ.js.map +7 -0
  22. package/dist/plugin-POMHVGD4.js +53 -0
  23. package/dist/plugin-POMHVGD4.js.map +7 -0
  24. package/dist/scheduler-Q7OHNGP6.js +274 -0
  25. package/dist/scheduler-Q7OHNGP6.js.map +7 -0
  26. package/dist/server.js +3016 -0
  27. package/dist/server.js.map +7 -0
  28. package/dist/skills-66WRX64H.js +17 -0
  29. package/dist/skills-66WRX64H.js.map +7 -0
  30. package/dist/skills-spec.js +172 -0
  31. package/dist/skills-spec.js.map +7 -0
  32. package/dist/tools-P5537ASX.js +148 -0
  33. package/dist/tools-P5537ASX.js.map +7 -0
  34. package/package.json +51 -0
  35. package/skills/README.md +69 -0
  36. package/skills/SPEC.md +274 -0
  37. package/skills/bug-repro/SKILL.md +53 -0
  38. package/skills/deep-research/SKILL.md +451 -0
  39. package/skills/deep-research/references/V6_1_improvements.md +112 -0
  40. package/skills/deep-research/references/completeness_review_checklist.md +25 -0
  41. package/skills/deep-research/references/counter_review_team_guide.md +181 -0
  42. package/skills/deep-research/references/enterprise_analysis_frameworks.md +135 -0
  43. package/skills/deep-research/references/enterprise_mode.md +99 -0
  44. package/skills/deep-research/references/enterprise_quality_checklist.md +160 -0
  45. package/skills/deep-research/references/enterprise_research_methodology.md +164 -0
  46. package/skills/deep-research/references/formatting_rules.md +31 -0
  47. package/skills/deep-research/references/quality_gates.md +77 -0
  48. package/skills/deep-research/references/report_template_v6.md +82 -0
  49. package/skills/deep-research/references/research_notes_format.md +147 -0
  50. package/skills/deep-research/references/research_plan_checklist.md +26 -0
  51. package/skills/deep-research/references/research_report_template.md +49 -0
  52. package/skills/deep-research/references/source_accessibility_policy.md +179 -0
  53. package/skills/deep-research/references/source_quality_rubric.md +28 -0
  54. package/skills/deep-research/references/subagent_prompt.md +116 -0
  55. package/skills/inbox-digest/SKILL.md +51 -0
  56. package/skills/skill-author/SKILL.md +92 -0
  57. package/skills/weekly-report/SKILL.md +49 -0
  58. package/web/dist/assets/index-BLQ8rPiN.js +130 -0
  59. package/web/dist/assets/index-IEIkG_jd.css +2 -0
  60. 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.