Conversation
🧙 Wizard CIRun the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands: Test all apps:
Test all apps in a directory:
Test an individual app:
Show more apps
Results will be posted here when complete. |
|
|
||
| This is the **first** TodoWrite of the run. Open the four-item list with these `content` strings verbatim, with the first task `in_progress` and the others `pending`: | ||
|
|
||
| ``` |
There was a problem hiding this comment.
curious: if we need serious predictability, would it work better to track this progress with a custom tool that directly manipulates both files and state? the TodoWrite hack is great for free-form work the agent chooses but it looks like you want to constrain it closely here (which is fine)
I'm confident this will work as is but I'm wondering if there's a more ergonomic and scalable version that makes the determinism you're specifiying in these docs a side effect of the tool calls. wdyt?
There was a problem hiding this comment.
Yeah we don't need this. This is to make the already slow boot up feel faster so I don't stare at a blank table for like, longer than 2-3 minutes. I cannot for the life of me get this agent to putout a status update without first trying to make like 10 tool calls.
We can likely bypass this all together if we tried splitting this entire skill into subagent tasks.
There was a problem hiding this comment.
oh that's interesting, parallelize it with specific return value expectations, yeah
|
|
||
| ## Action | ||
|
|
||
| 1. `Glob` for the project's dependency manifests by name: `package.json`, `requirements.txt`, `pyproject.toml`, `Gemfile`, `composer.json`, `build.gradle`, `Podfile`. One Glob is enough. **Do not read any code**. |
There was a problem hiding this comment.
note to self: I want to check if this procedure should also be a tool (feel free to argue against while I think it through @gewenyu99)
There was a problem hiding this comment.
I think it should be. It should in fact be static and something we can reuse.
Opt-in continuations and preambles at config.yaml
|
|
||
| ## TodoWrite | ||
|
|
||
| This is the **first** TodoWrite of the run. Call `TodoWrite` with `todos` set to the **array** below (not a string — pass the literal array value): |
There was a problem hiding this comment.
lol
this is a very specific form of cyberpunk
There was a problem hiding this comment.
There is a story behind every weird prompt.
| The audit runs as a 4-step chain. Each step file ends with a pointer to the next. Follow them in the order they are written. You must resolve them in order before any source-tree exploration. | ||
|
|
||
| **Start by reading `references/1-seed.md`.** Do not Glob, ls, or find the skill directory. Do not preload future steps. Do not re-read a step file once you've moved past it. Do not re-read SKILL.md. | ||
| The audit ledger is already seeded with the 9 pending checks. Use `mcp__wizard-tools__audit_resolve_checks` to patch each one as you finish it. |
There was a problem hiding this comment.
is it still 9?
do we want some templating here or is that overkill?
There was a problem hiding this comment.
Still 9. Templating would be good. I'm gonna bring back the template. Had it at some point before pulling back to a smaller subset
| const localReferences = fs.readdirSync(sourceReferencesDir, { withFileTypes: true }) | ||
| .filter(entry => entry.isFile() && entry.name.endsWith('.md')); | ||
|
|
||
| const refsConfig = skill._references || {}; | ||
|
|
||
| // Build continuation map when opted in via config | ||
| const continuationMap = new Map(); | ||
| if (refsConfig.continuations) { | ||
| const sequentialPattern = /^(\d+)-(.+)\.md$/; | ||
| const sequential = localReferences | ||
| .filter(entry => sequentialPattern.test(entry.name)) | ||
| .sort((a, b) => { | ||
| const aNum = parseInt(a.name.match(sequentialPattern)[1], 10); | ||
| const bNum = parseInt(b.name.match(sequentialPattern)[1], 10); | ||
| return aNum - bNum; | ||
| }); | ||
|
|
||
| for (let i = 0; i < sequential.length - 1; i++) { | ||
| continuationMap.set(sequential[i].name, sequential[i + 1].name); | ||
| } | ||
| } | ||
|
|
||
| for (const reference of localReferences) { | ||
| const sourcePath = path.join(sourceReferencesDir, reference.name); | ||
| const content = fs.readFileSync(sourcePath, 'utf8'); | ||
| let content = fs.readFileSync(sourcePath, 'utf8'); | ||
| const headingMatch = content.match(/^#\s+(.+)$/m); | ||
|
|
||
| // Inject preamble after the first heading if configured | ||
| if (refsConfig.preamble && headingMatch) { | ||
| const headingEnd = content.indexOf(headingMatch[0]) + headingMatch[0].length; | ||
| content = content.slice(0, headingEnd) + '\n\n' + refsConfig.preamble + content.slice(headingEnd); | ||
| } | ||
|
|
||
| // Auto-append continuation for sequential references | ||
| const nextFile = continuationMap.get(reference.name); | ||
| if (nextFile) { | ||
| content = content.replace(/\n+---\n+\*\*Upon completion, continue with:\*\*\s*\[.*?\]\(.*?\)\s*$/, ''); | ||
| content += `\n\n---\n\n**Upon completion, continue with:** [${nextFile}](${nextFile})`; | ||
| } |
There was a problem hiding this comment.
My biggest suggestion: I think we should explicitly encode preamble and sequential | next_step patterns into frontmatter for each reference file
- relying on file naming convention is kind of clunky
- what happens if we need to eventually support a variety of files in
/references, each with different preambles and sequences - more composable if we do it on a per-file basis
There was a problem hiding this comment.
did you mean to check this in here?
This could go into an /assets directory within the audit skill directory
There was a problem hiding this comment.
l o l no definitely not
- Move continuation chaining from filename-numbering convention to per-file `next_step` frontmatter on each reference. `5-report.md` declares `next_step: null` to mark the terminal step. - Group-level `preamble` stays in config.yaml and is only injected when a file has a next step (terminal files don't need the "read only this" framing). - Remove the accidentally committed `.posthog-audit-checks.json` runtime ledger and gitignore both it and `posthog-audit-report.md`. Generated-By: PostHog Code Task-Id: 108de9ba-4744-4815-b2d4-491b07fb0572
lol what a massive skill
lots of handholding for progressively selecting appropriate items from the best-practices skill, creating todos, and doing them so we get progressive progress updates.
This is more of a "get it to work" edition of the skill. :kek: it is very needing of various optimizations.