Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion context/skills/self-driving/description.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Each step file points to the next. Run them in order. **Start by reading `refere
- **Trust the setup report.** `./posthog-setup-report.md` is ground truth for what is instrumented. Scan the codebase only for what the report won't cover.
- **Every write must be idempotent.** List before you create. A duplicate `inbox-source-configs-create` returns 400 — recover by finding the existing row's `id` and calling `inbox-source-configs-partial-update` with `enabled: true`.
- **Never disable a source the user already enabled.** You only switch things on (and tune scouts off); existing enabled rows are someone's deliberate choice.
- **Never enable a connected-tool source the user hasn't confirmed they use.** GitHub Issues, Linear, Zendesk, pganalyze, and Jira are ask-then-connect, never blind.
- **Never enable a connected-tool source the user hasn't confirmed they use.** GitHub Issues, Linear, Jira, and the other issue-tracking, error-tracking, support, security-scanner, and product-feedback tools in step 5 are all ask-then-connect, never blind.
- **Stay off the internal surfaces.** Don't call `signals-scout-emit-signal` or any scratchpad-write tool, and don't change a scout's `emit` flag or `run_interval_minutes` — on configs, this skill only flips `enabled`. **Built-in scout bodies are never edited.** New scout skills are created in exactly one place: step 6b, and only ones the user approved there.
- **Keep the scout troop small.** Every enabled scout is a recurring LLM spend. Step 6 enables only `signals-scout-general` plus the **one or two** specialists for the products this project uses most — never error tracking or session replay (those reach the inbox as native sources) — and step 6b adds **at most two** custom scouts. Everything else stays disabled.
- **Batch your questions.** `wizard_ask` has a small per-run budget; one multi-select beats four yes/nos. Don't skip a step or drop a connector (e.g. Linear) or custom scouts setup to save calls.
Expand Down
2 changes: 1 addition & 1 deletion context/skills/self-driving/references/2-read-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Load the local tools via `ToolSearch select:Read,Glob,Grep`. Reach the PostHog t
- **Logs**: is the PostHog logs product in use (per the profile)?
- **CSP**: is a Content-Security-Policy with PostHog CSP reporting configured?
- **Support**: does the team use PostHog support/conversations (per the profile)?
- **Issue trackers**: any hints of Linear, Zendesk, pganalyze, or Jira (you will still ask in step 5hints only shape the question, they never authorize enabling).
- **Connected tools**: any hints of an issue tracker (Linear, Jira, GitLab, Gitea, Shortcut), error tracker (Sentry, Rollbar, Bugsnag, Honeybadger, Raygun), support desk (Zendesk, Freshdesk, Front, Gorgias, Kustomer, Dixa, Plain), database performance (pganalyze), security scanner (Snyk, SonarQube, Semgrep, Rapid7), or product-feedback / review tool (Featurebase, Frill, Aha, UserVoice, Productboard, Canny, AskNicely, Retently, Appfigures, AppFollow, Judge.me) — you will still ask in step 5; hints only shape the question, they never authorize enabling.

Do NOT crawl the whole source tree. If a question can't be answered cheaply, record "unknown" and move on — unknowns default to asking the user about sources; for scouts, an unconfirmed surface won't rank among the most-used products, so step 6 won't enable its scout.

Expand Down
68 changes: 64 additions & 4 deletions context/skills/self-driving/references/5-connected-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ next_step: 6-scouts.md

# Step 5 — Connected-tool sources (ask, then connect)

External tools can feed the inbox too: GitHub Issues, Linear, Zendesk, pganalyze, and Jira. Each needs a **data warehouse source** before its signal source produces anything — a source row without the warehouse connection is dormant: harmless, but silent until the source syncs. Never enable one the user hasn't confirmed.
External tools can feed the inbox too: issue trackers (GitHub Issues, Linear, Jira, GitLab, Gitea, Shortcut), error tracking (Sentry, Rollbar, Bugsnag, Honeybadger, Raygun), support desks (Zendesk, Freshdesk, Freshservice, Front, Gorgias, Kustomer, Dixa, Plain), database performance (pganalyze), security scanners (Snyk, SonarQube, Semgrep, Rapid7 InsightVM), and product feedback / reviews (Featurebase, Frill, Aha, UserVoice, Productboard, Canny, AskNicely, Retently, Appfigures, AppFollow, Judge.me). Each needs a **data warehouse source** before its signal source produces anything — a source row without the warehouse connection is dormant: harmless, but silent until the source syncs. Never enable one the user hasn't confirmed.

The run can connect **every** one of them, each with at most one click from the user, and it never asks anyone to paste a credential into this chat:

Expand Down Expand Up @@ -39,14 +39,44 @@ Load `wizard_ask` via `ToolSearch select:mcp__wizard-tools__wizard_ask`. Reach `
{ label: "None of these", value: "none" },
{ label: "GitHub Issues", value: "github-issues" },
{ label: "Linear", value: "linear" },
{ label: "Jira", value: "jira" },
{ label: "GitLab", value: "gitlab" },
{ label: "Gitea", value: "gitea" },
{ label: "Shortcut", value: "shortcut" },
{ label: "Sentry", value: "sentry" },
{ label: "Rollbar", value: "rollbar" },
{ label: "Bugsnag", value: "bugsnag" },
{ label: "Honeybadger", value: "honeybadger" },
{ label: "Raygun", value: "raygun" },
{ label: "Zendesk", value: "zendesk" },
{ label: "Freshdesk", value: "freshdesk" },
{ label: "Freshservice", value: "freshservice" },
{ label: "Front", value: "front" },
{ label: "Gorgias", value: "gorgias" },
{ label: "Kustomer", value: "kustomer" },
{ label: "Dixa", value: "dixa" },
{ label: "Plain", value: "plain" },
{ label: "pganalyze", value: "pganalyze" },
{ label: "Jira", value: "jira" }
{ label: "Snyk", value: "snyk" },
{ label: "SonarQube", value: "sonarqube" },
{ label: "Semgrep", value: "semgrep" },
{ label: "Rapid7 InsightVM", value: "rapid7_insightvm" },
{ label: "Featurebase", value: "featurebase" },
{ label: "Frill", value: "frill" },
{ label: "Aha", value: "aha" },
{ label: "UserVoice", value: "uservoice" },
{ label: "Productboard", value: "productboard" },
{ label: "Canny", value: "canny" },
{ label: "AskNicely", value: "asknicely" },
{ label: "Retently", value: "retently" },
{ label: "Appfigures", value: "appfigures" },
{ label: "AppFollow", value: "appfollow" },
{ label: "Judge.me", value: "judgeme_reviews" }
]
}
```

2. Call `external-data-sources-list` once (step 2's project profile also lists warehouse sources when it exists). For each picked tool whose source already exists (`source_type` `Github` / `Linear` / `Zendesk` / `PgAnalyze` / `Jira`): record "already connected" — no connector flow needed, just enable its responder row (step 4 below).
2. Call `external-data-sources-list` once (step 2's project profile also lists warehouse sources when it exists). For each picked tool whose source already exists, match its warehouse `source_type`: `Github` / `Linear` / `Jira` / `GitLab` / `Gitea` / `Shortcut` / `Sentry` / `Rollbar` / `Bugsnag` / `Honeybadger` / `Raygun` / `Zendesk` / `Freshdesk` / `Freshservice` / `Front` / `Gorgias` / `Kustomer` / `Dixa` / `Plain` / `PgAnalyze` / `Snyk` / `Sonarqube` / `Semgrep` / `Rapid7Insightvm` / `Featurebase` / `Frill` / `Aha` / `Uservoice` / `Productboard` / `Canny` / `Asknicely` / `Retently` / `Appfigures` / `Appfollow` / `JudgeMeReviews`. Record "already connected" — no connector flow needed, just enable its responder row (step 4 below).

3. Dispatch each picked tool that's still missing:

Expand All @@ -58,9 +88,39 @@ Load `wizard_ask` via `ToolSearch select:mcp__wizard-tools__wizard_ask`. Reach `

- GitHub Issues → `github` / `issue`
- Linear → `linear` / `issue`
- Jira → `jira` / `issue`
- GitLab → `gitlab` / `issue`
- Gitea → `gitea` / `issue`
- Shortcut → `shortcut` / `issue`
- Sentry → `sentry` / `issue`
- Rollbar → `rollbar` / `issue`
- Bugsnag → `bugsnag` / `issue`
- Honeybadger → `honeybadger` / `issue`
- Raygun → `raygun` / `issue`
- Zendesk → `zendesk` / `ticket`
- Freshdesk → `freshdesk` / `ticket`
- Freshservice → `freshservice` / `ticket`
- Front → `front` / `ticket`
- Gorgias → `gorgias` / `ticket`
- Kustomer → `kustomer` / `ticket`
- Dixa → `dixa` / `ticket`
- Plain → `plain` / `ticket`
- pganalyze → `pganalyze` / `issue`
- Jira → `jira` / `issue`
- Snyk → `snyk` / `scanner_finding`
- SonarQube → `sonarqube` / `scanner_finding`
- Semgrep → `semgrep` / `scanner_finding`
- Rapid7 InsightVM → `rapid7_insightvm` / `scanner_finding`
- Featurebase → `featurebase` / `feedback`
- Frill → `frill` / `feedback`
- Aha → `aha` / `feedback`
- UserVoice → `uservoice` / `feedback`
- Productboard → `productboard` / `feedback`
- Canny → `canny` / `feedback`
- AskNicely → `asknicely` / `feedback`
- Retently → `retently` / `feedback`
- Appfigures → `appfigures` / `review`
- AppFollow → `appfollow` / `review`
- Judge.me → `judgeme_reviews` / `review`

5. Record each picked tool's final class honestly — the report consumes these verbatim:

Expand Down
Loading