Skip to content

feat: update content-automation bootstrap for GEO article flow#31371

Merged
alex-nork merged 1 commit into
alex-nork/content-automation-geo-skillfrom
run-plan/geo-skill/pr-2
May 20, 2026
Merged

feat: update content-automation bootstrap for GEO article flow#31371
alex-nork merged 1 commit into
alex-nork/content-automation-geo-skillfrom
run-plan/geo-skill/pr-2

Conversation

@alex-nork
Copy link
Copy Markdown
Contributor

@alex-nork alex-nork commented May 20, 2026

Summary

  • Update BOOTSTRAP-CONTENT-AUTOMATION.md to handle GEO-focused first message
  • Reference geo skill's article formats (listicle, head-to-head) and QC checklist
  • Acknowledge user's GEO/AEO optimization intent in the opening

Part of plan: content-automation-geo-skill.md (PR 2 of 3)

Closes JARVIS-899


Open in Devin Review

@linear
Copy link
Copy Markdown

linear Bot commented May 20, 2026

JARVIS-899

@alex-nork alex-nork merged commit db3f57b into alex-nork/content-automation-geo-skill May 20, 2026
12 checks passed
@alex-nork alex-nork deleted the run-plan/geo-skill/pr-2 branch May 20, 2026 22:25
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

View 1 additional finding in Devin Review.

Open in Devin Review

Comment on lines +80 to +82
2. **Pick the format.** Use the format the user chose (listicle, head-to-head, or custom). Load the geo skill's structure for that format.
3. **Write the article.** Lead with the angle. Mirror voice from what was scanned (VOICE.md). Apply the geo skill's writing rules: first-person, warm, direct. No em dashes. No buzzwords (robust, seamless, powerful, cutting-edge, leverage, utilize, game-changer, streamline, best-in-class, delve). HTML tables only (not markdown tables). Academic-style inline citations.
4. **QC before delivering.** Run the geo skill's QC checklist before outputting. Fix failures before delivering.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Template instructs model to load artifacts from a non-existent "geo skill"

The template instructs the model to "Load the geo skill's structure for that format" (line 80) and "Run the geo skill's QC checklist before outputting" (line 82), but no "geo" skill exists anywhere in the repository — not in skills/, not in skills/catalog.json, and not as any SKILL.md file. While some geo-related rules are described inline (banned words at line 81/138, writing style at line 81), the "structure for that format" and "QC checklist" are never defined. The model will either fail to find these artifacts or hallucinate their contents, leading to unpredictable behavior in the content automation funnel.

All references to the non-existent geo skill
  • Line 14: "the two proven article formats from the geo skill"
  • Line 77: "Follow the geo skill's workflow for the first draft"
  • Line 79: "run the geo skill's research phase"
  • Line 80: "Load the geo skill's structure for that format"
  • Line 81: "Apply the geo skill's writing rules"
  • Line 82: "Run the geo skill's QC checklist"
  • Line 138: "Follow the geo skill's banned words list"
Prompt for agents
The template references a "geo skill" that does not exist in the skills/ directory or catalog.json. The instructions at lines 80 and 82 tell the model to "Load the geo skill's structure for that format" and "Run the geo skill's QC checklist" — but these artifacts are not defined anywhere. Two approaches to fix:

1. Create an actual geo skill in skills/geo/ with a SKILL.md that contains the article format structures (listicle, head-to-head) and a QC checklist. Then the bootstrap template can reference this skill and the model can load it via the normal skill-loading mechanism.

2. Inline ALL the referenced artifacts directly in the bootstrap template. Currently the banned words and writing rules are partially inlined, but the format structures and QC checklist are not. If you don't want to create a separate skill, define the listicle structure, head-to-head structure, and QC checklist items directly in the template so the model has concrete instructions to follow.

Option 1 is preferred per AGENTS.md System Prompt Minimalism rule, which says to encode behavior in a SKILL.md that the assistant loads on demand rather than adding to the system prompt.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +138 to +142
- Follow the geo skill's banned words list: never use "robust", "seamless", "powerful", "cutting-edge", "leverage", "utilize", "game-changer", "streamline", "best-in-class", "delve".
- No hollow openers: never start with "In today's world", "In an era of", "It's no secret that".
- Zero em dashes in any output. Use periods, commas, or parentheses instead.
- Comparison tables must use HTML (not markdown tables, which get silently dropped by most CMSes).
- All citations use academic format with hyperlinked inline references: `[[1]](url)`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 System Prompt Minimalism — GEO rules added inline instead of via a skill

The AGENTS.md System Prompt Minimalism rule says: "Adding content to the system prompt is a last resort" and to prefer encoding behavior in a SKILL.md. This PR adds ~20 new lines to the bootstrap template (which is included in the system prompt via buildSystemPrompt() at assistant/src/prompts/system-prompt.ts:373-389). The new content includes banned words lists, citation format rules, table format requirements, and hollow opener restrictions — all of which are behavioral rules that could live in a skill's SKILL.md. The template already references "the geo skill" as if it should exist, suggesting the intent may be to create the skill separately. Since the bootstrap template auto-deletes after 4 turns (assistant/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md:146), the token-cost impact is bounded to early conversations. Still, extracting these rules into an actual geo skill would both satisfy the minimalism rule and resolve the non-existent skill reference bug.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

## First turn

Greet briefly — one sentence. Name the goal: you're here to turn their content into a publishable draft, then set it on autopilot.
The user's first message will be "I want to write articles that rank better in GEO." Acknowledge that goal directly: you'll help them create articles designed to get cited by AI search engines. One sentence, no fluff.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Template assumes a fixed first user message

Line 12 states: "The user's first message will be 'I want to write articles that rank better in GEO.'" This is a strong assumption about user behavior. If the content-automation cohort onboarding flow actually pre-populates this exact message, this is fine. But if users can type a free-form first message, the model will be confused when the actual message doesn't match. Worth verifying that the pre-chat onboarding flow actually sends this exact message. If it doesn't, this instruction should be softened to "The user may say something like..." to handle variability.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8cb89934da

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Follow the geo skill's workflow for the first draft:

1. **Research first.** Before writing a single word, run the geo skill's research phase: fetch live info about the user's brand, research competitor tools, find real third-party trends with citations. Never fabricate or assume facts.
2. **Pick the format.** Use the format the user chose (listicle, head-to-head, or custom). Load the geo skill's structure for that format.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ask for format choice before requiring a chosen format

This flow now requires “the format the user chose,” but in the normal onboarding path (Website URL/Sanity already present) the template never asks the user to pick listicle vs head-to-head before moving to drafting, so the assistant will either guess or proceed without explicit user intent. That makes draft structure nondeterministic and undermines the new GEO format control you added.

Useful? React with 👍 / 👎.

Comment on lines +77 to +79
Follow the geo skill's workflow for the first draft:

1. **Research first.** Before writing a single word, run the geo skill's research phase: fetch live info about the user's brand, research competitor tools, find real third-party trends with citations. Never fabricate or assume facts.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid referencing an undefined geo-skill workflow

The instructions require running a “geo skill” research phase, loading its format structure, and running its QC checklist, but this commit does not include a resolvable workflow definition in the template itself; if that skill/checklist is unavailable at runtime, the assistant cannot execute these steps and will invent behavior, which risks inconsistent article quality across users.

Useful? React with 👍 / 👎.

alex-nork added a commit that referenced this pull request May 21, 2026
…ARVIS-899) (#31378)

* feat: add GEO article writing skill as bundled skill (#31369)

* feat: update content-automation bootstrap for GEO article flow (#31371)

* fix: move geo skill reference files to references/ subdir, remove orphaned drafts, add compatibility field (#31376)

* fix: remove duplicated geo skill rules from bootstrap template (#31377)

* feat: rename geo -> geo-writing, rewrite bootstrap for skill-first onboarding (#31380)

* feat: rename geo skill to geo-writing, rewrite bootstrap for skill-first onboarding

* test: update bootstrap tests for skill-first onboarding rewrite

* feat: rewrite wake-up greeting to GEO message for content-automation cohort (#31384)

* fix: replace hardcoded brand placeholders with dynamic references in geo-writing skill (#31432)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant