-
Notifications
You must be signed in to change notification settings - Fork 5
feat: bound Dynamic Workflow fan-out and add multi-provider login #32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
c867dab
feat(agent-core): add a disableWorkflows kill switch
elkaix df26a18
feat(agent-core): add an advisory workflow size guideline
elkaix 22fc96f
feat(agent-core): bound subagent fan-out with three hard caps
elkaix cfd6895
feat(agent-core): identify each Dynamic Workflow run
elkaix 0a7192c
feat(agent-core): correlate subagent events with their workflow run
elkaix 1c7f2cd
feat(clients): surface the large-workflow warning in every client
elkaix 316e871
feat(agent-core): require structured output from workflow subagents
elkaix ee1ce6d
refactor(login): put the provider login flows behind a renderer port
elkaix 9ec2ea5
feat(login): give `pythinker login` the multi-provider picker
elkaix 65910ca
refactor(login): move the provider login flows into the SDK
elkaix 79abc37
feat(login): give the VS Code extension the multi-provider picker
elkaix 46552ef
fix(dynamic-workflow): ignore empty items instead of rejecting the call
elkaix f843913
feat(tui): spin a grey dot on running Dynamic Workflow rows
elkaix 45e5802
fix(login,workflow): keep the output schema on retry and persist the …
elkaix d159963
feat(tui): replace workflow progress with work done and time since la…
elkaix 14f9250
fix(dynamic-workflow): stop blank items from breaking the run they we…
elkaix c20f252
docs: require ASD-STE100 Simplified Technical English in agent replies
elkaix 71edfb0
fix(login): make sign-in cancellable and accept a provider's plain id
elkaix 9ac4620
chore: add stop-slop skill and its lock entry
elkaix 87597d8
fix: address PR review findings on login, workflow rows, and input pa…
elkaix f2e260f
test(vscode): type the openExternal mock like the real API
elkaix c7c8ff1
test(login): move the imports above the vi.mock block
elkaix 0b78a4d
test(login): cover the open-platform effort path end to end
elkaix 072b4ff
refactor(tui): choose the idle colour from the running phase
elkaix 9d507eb
refactor(login): import the effort rules from the SDK directly
elkaix File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # Changelog | ||
|
|
||
| ## 2026-01-13 | ||
|
|
||
| ### Added | ||
|
|
||
| **Phrases (references/phrases.md)** | ||
| - Throat-clearing: "Here's what I find interesting", "Here's the problem though" | ||
| - Performative emphasis: "creeps in", "I promise", "They exist, I promise" | ||
| - Telling instead of showing: "This is genuinely hard", "This is what leadership actually looks like" | ||
|
|
||
| **Structures (references/structures.md)** | ||
| - Binary contrasts: "Not X. But Y.", "It's not this. It's that.", "stops being X and starts being Y" | ||
| - Rhythm patterns: staccato fragmentation, dashes for dramatic pause, hedging as reassurance | ||
| - Word patterns: absolute words (always, never, everyone, etc.), AI-overused intensifiers (deeply, truly, fundamentally, inherently, simply, literally, inevitably) | ||
|
|
||
| ## 2026-01-12 | ||
|
|
||
| - Restructured skill following Claude Code best practices (PR #1) | ||
| - Split into SKILL.md and references/ folder | ||
|
|
||
| ## 2025-01-12 | ||
|
|
||
| - Initial release |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| MIT License | ||
|
|
||
| Copyright (c) 2025 Hardik Pandya | ||
|
|
||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
|
|
||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
|
|
||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| # Stop Slop | ||
|
|
||
| A skill for removing AI tells from prose. | ||
|
|
||
| <img width="3840" height="2160" alt="G-Yg4RVbIAAhVxW" src="https://github.com/user-attachments/assets/902afc15-1f40-4a9d-af24-8cd67afb8ebf" /> | ||
|
|
||
| ## What this is | ||
|
|
||
| AI writing has patterns. Predictable phrases, structures, rhythms. This skill teaches Claude (or any LLM) to catch and remove them. | ||
|
|
||
| ## Skill Structure | ||
|
|
||
| ``` | ||
| stop-slop/ | ||
| ├── SKILL.md # Core instructions | ||
| ├── references/ | ||
| │ ├── phrases.md # Phrases to remove | ||
| │ ├── structures.md # Structural patterns to avoid | ||
| │ └── examples.md # Before/after transformations | ||
| ├── README.md | ||
| └── LICENSE | ||
| ``` | ||
|
elkaix marked this conversation as resolved.
|
||
|
|
||
| ## Quick start | ||
|
|
||
| **Claude Code:** Add this folder as a skill. | ||
|
|
||
| **Claude Projects:** Upload `SKILL.md` and reference files to project knowledge. | ||
|
|
||
| **Custom instructions:** Copy core rules from `SKILL.md`. | ||
|
|
||
| **API calls:** Include `SKILL.md` in your system prompt. Reference files load on demand. | ||
|
|
||
| ## What it catches | ||
|
|
||
| **Banned phrases** - Throat-clearing openers, emphasis crutches, business jargon, all adverbs, vague declaratives, meta-commentary. See `references/phrases.md`. | ||
|
|
||
| **Structural clichés** - Binary contrasts, negative listings, dramatic fragmentation, rhetorical setups, false agency, narrator-from-a-distance voice, passive voice. See `references/structures.md`. | ||
|
|
||
| **Sentence-level rules** - No Wh- sentence starters, no em dashes, no staccato fragmentation, no lazy extremes, active voice required. | ||
|
|
||
| ## Scoring | ||
|
|
||
| Rate 1-10 on each dimension: | ||
|
|
||
| | Dimension | Question | | ||
| |-----------|----------| | ||
| | Directness | Statements or announcements? | | ||
| | Rhythm | Varied or metronomic? | | ||
| | Trust | Respects reader intelligence? | | ||
| | Authenticity | Sounds human? | | ||
| | Density | Anything cuttable? | | ||
|
|
||
| Below 35/50: revise. | ||
|
|
||
| ## Author | ||
|
|
||
| [Hardik Pandya](https://hvpandya.com) | ||
|
|
||
| ## License | ||
|
|
||
| MIT. Use freely, share widely. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| --- | ||
| name: stop-slop | ||
| description: Remove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells. | ||
| metadata: | ||
| trigger: Writing prose, editing drafts, reviewing content for AI patterns | ||
| author: Hardik Pandya (https://hvpandya.com) | ||
| --- | ||
|
|
||
| # Stop Slop | ||
|
|
||
| Eliminate predictable AI writing patterns from prose. | ||
|
|
||
| ## Core Rules | ||
|
|
||
| 1. **Cut filler phrases.** Remove throat-clearing openers, emphasis crutches, and all adverbs. See [references/phrases.md](references/phrases.md). | ||
|
|
||
| 2. **Break formulaic structures.** Avoid binary contrasts, negative listings, dramatic fragmentation, rhetorical setups, false agency. See [references/structures.md](references/structures.md). | ||
|
|
||
| 3. **Use active voice.** Every sentence needs a human subject doing something. No passive constructions. No inanimate objects performing human actions ("the complaint becomes a fix"). | ||
|
|
||
| 4. **Be specific.** No vague declaratives ("The reasons are structural"). Name the specific thing. No lazy extremes ("every," "always," "never") doing vague work. | ||
|
|
||
| 5. **Put the reader in the room.** No narrator-from-a-distance voice. "You" beats "People." Specifics beat abstractions. | ||
|
|
||
| 6. **Vary rhythm.** Mix sentence lengths. Two items beat three. End paragraphs differently. No em dashes. | ||
|
|
||
| 7. **Trust readers.** State facts directly. Skip softening, justification, hand-holding. | ||
|
|
||
| 8. **Cut quotables.** If it sounds like a pull-quote, rewrite it. | ||
|
|
||
| ## Quick Checks | ||
|
|
||
| Before delivering prose: | ||
|
|
||
| - Any adverbs? Kill them. | ||
| - Any passive voice? Find the actor, make them the subject. | ||
| - Inanimate thing doing a human verb ("the decision emerges")? Name the person. | ||
| - Sentence starts with a Wh- word? Restructure it. | ||
| - Any "here's what/this/that" throat-clearing? Cut to the point. | ||
| - Any "not X, it's Y" contrasts? State Y directly. | ||
| - Three consecutive sentences match length? Break one. | ||
| - Paragraph ends with punchy one-liner? Vary it. | ||
| - Em-dash anywhere? Remove it. | ||
| - Vague declarative ("The implications are significant")? Name the specific implication. | ||
| - Narrator-from-a-distance ("Nobody designed this")? Put the reader in the scene. | ||
| - Meta-joiners ("The rest of this essay...")? Delete. Let the essay move. | ||
|
|
||
| ## Scoring | ||
|
|
||
| Rate 1-10 on each dimension: | ||
|
|
||
| | Dimension | Question | | ||
| |-----------|----------| | ||
| | Directness | Statements or announcements? | | ||
| | Rhythm | Varied or metronomic? | | ||
| | Trust | Respects reader intelligence? | | ||
| | Authenticity | Sounds human? | | ||
| | Density | Anything cuttable? | | ||
|
|
||
| Below 35/50: revise. | ||
|
|
||
| ## Examples | ||
|
|
||
| See [references/examples.md](references/examples.md) for before/after transformations. | ||
|
|
||
| ## License | ||
|
|
||
| MIT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| # Before/After Examples | ||
|
|
||
| ## Example 1: Throat-Clearing + Binary Contrast | ||
|
|
||
| **Before:** | ||
| > "Here's the thing: building products is hard. Not because the technology is complex. Because people are complex. Let that sink in." | ||
|
|
||
| **After:** | ||
| > "Building products is hard. Technology is manageable. People aren't." | ||
|
|
||
| **Changes:** Removed opener, binary contrast structure, and emphasis crutch. Direct statements. | ||
|
|
||
| --- | ||
|
|
||
| ## Example 2: Filler + Unnecessary Reassurance | ||
|
|
||
| **Before:** | ||
| > "It turns out that most teams struggle with alignment. The uncomfortable truth is that nobody wants to admit they're confused. And that's okay." | ||
|
|
||
| **After:** | ||
| > "Teams struggle with alignment. Nobody admits confusion." | ||
|
|
||
| **Changes:** Cut hedging ("most"), removed throat-clearing phrases, deleted permission-granting ending. | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
|
|
||
| --- | ||
|
|
||
| ## Example 3: Business Jargon Stack | ||
|
|
||
| **Before:** | ||
| > "In today's fast-paced landscape, we need to lean into discomfort and navigate uncertainty with clarity. This matters because your competition isn't waiting." | ||
|
|
||
| **After:** | ||
| > "Move faster. Your competition is." | ||
|
|
||
| **Changes:** Eliminated jargon entirely. Core message in six words. | ||
|
|
||
| --- | ||
|
|
||
| ## Example 4: Dramatic Fragmentation | ||
|
|
||
| **Before:** | ||
| > "Speed. Quality. Cost. You can only pick two. That's it. That's the tradeoff." | ||
|
|
||
| **After:** | ||
| > "Speed, quality, cost—pick two." | ||
|
|
||
| **Changes:** Single sentence. No performative emphasis. | ||
|
|
||
| --- | ||
|
|
||
| ## Example 5: Rhetorical Setup | ||
|
|
||
| **Before:** | ||
| > "What if I told you that the best teams don't optimize for productivity? Here's what I mean: they optimize for learning. Think about it." | ||
|
|
||
| **After:** | ||
| > "The best teams optimize for learning, not productivity." | ||
|
|
||
| **Changes:** Direct claim. No rhetorical scaffolding. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,128 @@ | ||
| # Phrases to Remove | ||
|
|
||
| ## Throat-Clearing Openers | ||
|
|
||
| Remove these announcement phrases. State the content directly. | ||
|
|
||
| - "Here's the thing:" | ||
| - "Here's what [X]" | ||
| - "Here's this [X]" | ||
| - "Here's that [X]" | ||
| - "Here's why [X]" | ||
| - "The uncomfortable truth is" | ||
| - "It turns out" | ||
| - "The real [X] is" | ||
| - "Let me be clear" | ||
| - "The truth is," | ||
| - "I'll say it again:" | ||
| - "I'm going to be honest" | ||
| - "Can we talk about" | ||
| - "Here's what I find interesting" | ||
| - "Here's the problem though" | ||
|
|
||
| Any "here's what/this/that" construction is throat-clearing before the point. Cut it and state the point. | ||
|
|
||
| ## Emphasis Crutches | ||
|
|
||
| These add no meaning. Delete them. | ||
|
|
||
| - "Full stop." / "Period." | ||
| - "Let that sink in." | ||
| - "This matters because" | ||
| - "Make no mistake" | ||
| - "Here's why that matters" | ||
|
|
||
| ## Business Jargon | ||
|
|
||
| Replace with plain language. | ||
|
|
||
| | Avoid | Use instead | | ||
| |-------|-------------| | ||
| | Navigate (challenges) | Handle, address | | ||
| | Unpack (analysis) | Explain, examine | | ||
| | Lean into | Accept, embrace | | ||
| | Landscape (context) | Situation, field | | ||
| | Game-changer | Significant, important | | ||
| | Double down | Commit, increase | | ||
| | Deep dive | Analysis, examination | | ||
| | Take a step back | Reconsider | | ||
| | Moving forward | Next, from now | | ||
| | Circle back | Return to, revisit | | ||
| | On the same page | Aligned, agreed | | ||
|
|
||
| ## Adverbs | ||
|
|
||
| Kill all adverbs. No -ly words. No softeners, no intensifiers, no hedges. | ||
|
|
||
| Specific offenders: | ||
|
|
||
| - "really" | ||
| - "just" | ||
| - "literally" | ||
| - "genuinely" | ||
| - "honestly" | ||
| - "simply" | ||
| - "actually" | ||
| - "deeply" | ||
| - "truly" | ||
| - "fundamentally" | ||
| - "inherently" | ||
| - "inevitably" | ||
| - "interestingly" | ||
| - "importantly" | ||
| - "crucially" | ||
|
|
||
| Also cut these filler phrases: | ||
|
|
||
| - "At its core" | ||
| - "In today's [X]" | ||
| - "It's worth noting" | ||
| - "At the end of the day" | ||
| - "When it comes to" | ||
| - "In a world where" | ||
| - "The reality is" | ||
|
|
||
| ## Meta-Commentary | ||
|
|
||
| Remove self-referential asides. The essay should move, not announce its own structure. | ||
|
|
||
| - "Hint:" | ||
| - "Plot twist:" / "Spoiler:" | ||
| - "You already know this, but" | ||
| - "But that's another post" | ||
| - "X is a feature, not a bug" | ||
| - "Dressed up as" | ||
| - "The rest of this essay explains..." | ||
| - "Let me walk you through..." | ||
| - "In this section, we'll..." | ||
| - "As we'll see..." | ||
| - "I want to explore..." | ||
|
|
||
| ## Performative Emphasis | ||
|
|
||
| False intimacy or manufactured sincerity: | ||
|
|
||
| - "creeps in" | ||
| - "I promise" | ||
| - "They exist, I promise" | ||
|
|
||
| ## Telling Instead of Showing | ||
|
|
||
| Announcing difficulty or significance rather than demonstrating it: | ||
|
|
||
| - "This is genuinely hard" | ||
| - "This is what leadership actually looks like" | ||
| - "This is what X actually looks like" | ||
| - "actually matters" | ||
|
|
||
| ## Vague Declaratives | ||
|
|
||
| Sentences that announce importance without naming the specific thing. Kill these. | ||
|
|
||
| - "The reasons are structural" | ||
| - "The implications are significant" | ||
| - "This is the deepest problem" | ||
| - "The stakes are high" | ||
| - "The consequences are real" | ||
|
|
||
| If a sentence says something is important/deep/structural without showing the specific thing, cut it or replace it with the specific thing. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.