Skip to content

Workflows#11

Open
ChrisThompsonTLDR wants to merge 5 commits intomainfrom
feature/workflows
Open

Workflows#11
ChrisThompsonTLDR wants to merge 5 commits intomainfrom
feature/workflows

Conversation

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner

@ChrisThompsonTLDR ChrisThompsonTLDR commented Apr 9, 2026

This pull request adds several new agent definitions and research agent templates to the .claude/agents/ directory, enhancing the repository's support for structured research and note generation for ideas, Laravel packages, MCP servers, and agent skills. It also adds or updates documentation for agent and skill synchronization processes and provides setup instructions for the agentic-programming skill. The most important changes are grouped below:

New Research Agents and Templates:

  • Added idea.agent.md: Defines the /idea agent for turning raw ideas into researched steering notes, with detailed principles and output templates.
  • Added laravel-package.agent.md: Introduces an agent to research Laravel packages and generate Obsidian notes, mapping specific fields to live data sources.
  • Added research-mcp.agent.md: Adds an agent to research Model Context Protocol (MCP) servers from URLs and generate structured research notes.
  • Added research-skill.agent.md: Provides an agent for researching agent skills published in git repositories, producing structured skill research notes.

Agent and Skill Synchronization Documentation:

  • Added sync-agents.md: Documents the process for replicating .steering/agents into .cursor/agents, .claude/agents, and .github/agents, including rules for YAML stripping and embed expansion.
  • Added sync-skills.md: Details the workflow for syncing agents, packaged skills, and skill-template mirrors across steering and IDE directories, including special handling for skill-research and template files.

Skill Documentation:

  • Added agentic-programming/SKILL.md: Provides context and setup instructions for the agentic-programming skill, including required secrets, memory enablement, usage, and key file paths.

Note

Low Risk
Mostly adds and updates markdown-based agent/skill definitions and sync documentation; low risk since it doesn’t change runtime application code, but mistakes could break agent usage or steering-sync CI expectations.

Overview
Introduces new /idea, /laravel-package, /research-mcp, and /research-skill agent definitions (mirrored across .claude/, .cursor/, and .github/) that prescribe live-research-driven note generation into .steering/.

Adds sync-agents and sync-skills agent/skill docs that define how .steering content is replicated into IDE-specific folders (including embed expansion and Copilot frontmatter stripping), and updates/removes older GitHub agent/skill artifacts (e.g., deprecating skill-research.agent.md, trimming Copilot mcp-servers blocks).

Adds multiple new packaged skill markdowns (Laravel/Pest/Livewire/Tailwind/Flux/Pint/Sail/etc.) and updates the agentic-programming skill note to align paths and setup guidance with the .steering-as-source-of-truth workflow.

Reviewed by Cursor Bugbot for commit dec0adb. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • New Features

    • Added new agent commands for idea capture, Laravel package research, MCP research, and skill research; added scripts to regenerate IDE mirrors and sync upstream skill content.
  • Documentation

    • Large set of new/updated skills and guides: Laravel ecosystem (packages, Pint, Sail, Livewire, Flux UI), testing (Pest, PHPUnit), Tailwind, Copilot/Cursor/MCP guidance, templates, and steering/sync procedures.
  • Chores

    • Added CI workflow to verify steering → IDE mirror synchronization.

This commit updates the README.md to include a new section on the source of truth for agents and skills, clarifying the synchronization process between `.steering/` and mirrored directories. It also revises the agent documentation to standardize naming conventions and improve descriptions for the `research-skill`, `research-mcp`, and `laravel-package` agents. Additionally, new skills and agents have been added, including `idea`, `sync-agents`, and `sync-skills`, along with their respective documentation. These changes aim to improve usability and consistency across the project.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

Walkthrough

This PR centralizes .steering/ as the canonical source for agents, skills, templates, and MCP configs; adds many new agent/skill specifications and mirrors under .github/, .cursor/, and .claude/; introduces mirror-regeneration and Boost-sync scripts; and adds CI verification plus extensive steering documentation. (50 words)

Changes

Cohort / File(s) Summary
Steering canonical sources
./.steering/agents/*.agent.md, ./.steering/skills/*/SKILL.md, ./.steering/templates/*, ./.steering/mcps/*, ./.steering/README.md, ./.steering/ideas/*, ./.steering/laravel-packages/*
Add canonical agent specs (idea, laravel-package, research-mcp, research-skill, sync-agents, sync-skills), many packaged skills and templates (skill.md, idea.md, laravel-package.md, AGENTS.md, agent.md), MCP docs/configs, and steering documentation.
IDE mirrors (generated)
./.github/agents/*, ./.cursor/agents/*, ./.claude/agents/*, ./.github/skills/*, ./.cursor/skills/*, ./.claude/skills/*
Add/update mirrored agent and skill files for GitHub/Cursor/Claude. Note: Copilot-only frontmatter (tools:, mcp-servers:) is stripped for Cursor/Claude; github-copilot/* embeds expanded only for Cursor outputs.
Mirror regeneration & sync scripts
scripts/regenerate-ide-mirrors.py, scripts/sync-boost-ai-skills.py
New CLI scripts: regenerate IDE mirrors by expanding Obsidian ![[...]] embeds with per-destination rules and stripping Copilot frontmatter; sync selected Laravel Boost .ai sources into .steering/skills/*/SKILL.md with transformations and provenance recording.
CI / workflows
.github/workflows/verify-steering-sync.yml (added), .github/workflows/sync-skill-template.yml (removed)
Add Verify steering sync workflow that runs regeneration and fails on diffs; remove legacy skill-template sync workflow.
MCP configs & docs
.steering/mcp.json, ./.steering/mcps/*
Add static MCP configuration and descriptive MCP integration pages (perplexity, deepwiki, github, context7) referenced by agent specs.
Templates & packaged outputs
./.steering/templates/idea.md, laravel-package.md, skill.md, AGENTS.md, etc.
Add standardized templates for ideas, packages, and skills; update skill-template formatting and related template mirrors.
Removed / migrated legacy artifacts
./.github/agents/skill-research.agent.md (deleted), templates/agents.md (deleted), ./.github/skills/laravel-research/laravel-package-template.md (deleted)
Remove legacy skill-research agent/template files and migrate behavior/content to canonical .steering/ layout.
Repository docs & steering guides
README.md, many .steering/github-copilot/*, .steering/cursor/*, .steering/skills/*
Large additions and reorganization of documentation covering steering, Copilot agents/skills/prompts, Cursor hooks/plugins/rules/skills, and mirror/sync workflows.
Steering manifests
.steering/skills/.boost-ai-sync.json
Record upstream Boost sync commit used by sync script.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant Script as Regenerator (scripts/regenerate-ide-mirrors.py)
  participant Boost as Boost Sync (scripts/sync-boost-ai-skills.py)
  participant Mirrors as IDE Mirrors (.github/.cursor/.claude)
  participant CI as Verify-steering-sync

  Dev->>Boost: run sync-boost (optional) → generate .steering/skills/*
  Dev->>Script: run regenerate-ide-mirrors.py (or CI triggers)
  Script->>Script: expand ![[...]] embeds, extract sections, apply per-target rules
  Script->>Mirrors: write generated files (.github/.cursor/.claude)
  CI->>Script: workflow runs script in runner
  Script->>CI: produces mirrors
  CI->>CI: git diff --exit-code
  CI-->>Dev: pass or fail (non-zero if diffs)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/workflows

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: 8f78007bf0

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +196 to +200
for f in sorted(agents_dir.iterdir()):
if not f.is_file() or f.name == "README.md":
continue
raw = f.read_text(encoding="utf-8")
if f.name == "research-skill.agent.md":
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Prune deleted agent mirrors during regeneration

This loop only rewrites files that currently exist in .steering/agents, but it never removes mirror files that no longer have a source. When a steering agent is deleted, stale copies remain in .github/agents, .cursor/agents, and .claude/agents, and the verify workflow can still report success because regeneration leaves no new diff. That breaks the repository's stated guarantee that mirror directories reflect .steering exactly.

Useful? React with 👍 / 👎.

Comment on lines +225 to +229
skills_root = root / ".steering" / "skills"
for skill_dir in sorted(skills_root.iterdir()):
if not skill_dir.is_dir():
continue
sk = skill_dir / "SKILL.md"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove obsolete mirrored skills when source skills disappear

The skills sync iterates only existing .steering/skills/*/SKILL.md entries and writes outputs, but it never deletes mirror skill directories that were removed upstream. If a steering skill is dropped or renamed, stale SKILL.md files under .github/.cursor/.claude persist indefinitely while CI still passes, so consumers can keep receiving outdated skill instructions that are no longer present in the source tree.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a .steering/ “source of truth” workflow for authoring agents/skills and mirroring them into .github/, .cursor/, and .claude/, along with new research agents/templates and supporting documentation/notes.

Changes:

  • Introduces new research agents (idea, research-skill, research-mcp, updated laravel-package) and note templates under .steering/.
  • Adds/updates packaged skills (including vendor-synced ones) plus steering docs describing replication rules.
  • Adds CI (Verify steering sync) to enforce mirror consistency via scripts/regenerate-ide-mirrors.py.

Reviewed changes

Copilot reviewed 122 out of 125 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
README.md Documents .steering as source of truth; updates agent list/layout
mcps/README.md Removes legacy MCP notes README
.steering/README.md Defines steering layout + replication rules
.steering/mcp.json Adds sample MCP server config
.steering/templates/skill.md Updates canonical skill spec template formatting
.steering/templates/laravel-package.md Adds canonical Laravel package note template
.steering/templates/idea.md Adds idea note template
.steering/templates/AGENTS.md Adds repo-wide agent guidance template
.steering/templates/agent.md Adds shared “Core Principles” template
.steering/agents/idea.agent.md Adds /idea agent definition
.steering/agents/laravel-package.agent.md Updates Laravel package research agent definition
.steering/agents/research-skill.agent.md Adds skill research agent definition
.steering/agents/research-mcp.agent.md Adds MCP research agent definition
.steering/agents/sync-agents.md Documents agent mirroring rules
.steering/agents/sync-skills.md Documents skills + templates mirroring rules
.steering/ideas/README.md Adds naming/usage guidance for idea notes
.steering/skills/README.md Documents packaged skills vs research notes
.steering/skills/SOURCES.md Tracks upstream skill sources + sync commands
.steering/skills/.boost-ai-sync.json Records last Laravel Boost sync commit
.steering/skills/skill-research/SKILL.md Adds packaged “skill-research” skill
.steering/skills/sync-agents/SKILL.md Adds packaged “sync-agents” skill
.steering/skills/sync-agents/tdd.md Adds TDD playbook for Laravel/Pest
.steering/skills/sync-skills/SKILL.md Adds packaged “sync-skills” skill
.steering/skills/laravel-research/SKILL.md Adds packaged “laravel-research” skill
.steering/skills/laravel-pint/SKILL.md Adds packaged “laravel-pint” skill
.steering/skills/laravel-sail/SKILL.md Adds packaged “laravel-sail” skill
.steering/skills/phpunit-laravel/SKILL.md Adds packaged “phpunit-laravel” skill
.steering/skills/tailwindcss-development/SKILL.md Adds packaged Tailwind skill (Boost-synced)
.steering/skills/fluxui-free-development/SKILL.md Adds packaged Flux UI (free) skill (Boost-synced)
.steering/skills/fluxui-pro-development/SKILL.md Adds packaged Flux UI (pro) skill (Boost-synced)
.steering/laravel-packages/README.md Removes legacy Laravel package notes README
.steering/laravel-packages/pestphp__pest.md Adds Laravel package research note
.steering/laravel-packages/livewire__flux.md Adds Laravel package research note
.steering/laravel-packages/laravel__pint.md Adds Laravel package research note
.steering/laravel-packages/larastan__larastan.md Adds Laravel package research note
.steering/mcps/upstash__context7.md Adds MCP research note (Context7)
.steering/mcps/deepwiki__mcp.md Adds MCP research note (DeepWiki MCP)
.steering/github-copilot/Agents.md Adds Copilot custom agents research note
.steering/github-copilot/Agent MCP.md Adds Copilot MCP research note
.steering/github-copilot/Environment.md Adds Copilot environment customization note
.steering/github-copilot/Memories.md Adds Copilot memory research note
.steering/github-copilot/Settings.md Adds Copilot MCP settings note
.steering/github-copilot/Skills.md Adds Copilot skills research note
.steering/github-copilot/SDK.md Adds Copilot SDK skill research note
.steering/github-copilot/plugins/Deep Wiki.md Adds Deep Wiki plugin research note
.steering/cursor/Plugins.md Adds Cursor plugins research note
.github/workflows/verify-steering-sync.yml Adds CI to verify mirrors match .steering
.github/workflows/sync-skill-template.yml Removes legacy workflow-based template copying
.github/agents/research-skill.agent.md Adds mirrored agent definition
.github/agents/laravel-package.agent.md Updates mirrored agent definition
.github/agents/sync-agents.md Adds mirrored maintainer agent
.github/agents/sync-skills.md Adds mirrored maintainer agent
.github/skills/skill-research/SKILL.md Updates mirrored skill-research skill
.github/skills/skill-research/skill-template.md Updates mirrored skill template
.github/skills/laravel-research/SKILL.md Updates mirrored laravel-research skill
.github/skills/laravel-research/laravel-package-template.md Removes legacy template mirror
.github/skills/agentic-programming/SKILL.md Updates mirrored repo setup skill
.github/skills/sync-agents/SKILL.md Adds mirrored sync-agents skill
.github/skills/sync-skills/SKILL.md Adds mirrored sync-skills skill
.github/skills/tailwindcss-development/SKILL.md Adds mirrored Tailwind skill
.github/skills/phpunit-laravel/SKILL.md Adds mirrored PHPUnit skill
.github/skills/laravel-sail/SKILL.md Adds mirrored Sail skill
.github/skills/laravel-pint/SKILL.md Adds mirrored Pint skill
.github/skills/fluxui-free-development/SKILL.md Adds mirrored Flux UI (free) skill
.github/skills/fluxui-pro-development/SKILL.md Adds mirrored Flux UI (pro) skill
.cursor/agents/research-skill.agent.md Adds mirrored agent definition
.cursor/agents/research-mcp.agent.md Adds mirrored agent definition
.cursor/agents/laravel-package.agent.md Adds mirrored agent definition
.cursor/agents/sync-agents.md Adds mirrored maintainer agent
.cursor/agents/sync-skills.md Adds mirrored maintainer agent
.cursor/skills/skill-template/SKILL.md Adds mirrored skill template
.cursor/skills/skill-research/SKILL.md Adds mirrored skill-research skill
.cursor/skills/laravel-research/SKILL.md Adds mirrored laravel-research skill
.cursor/skills/agentic-programming/SKILL.md Adds mirrored repo setup skill
.cursor/skills/sync-agents/SKILL.md Adds mirrored sync-agents skill
.cursor/skills/sync-skills/SKILL.md Adds mirrored sync-skills skill
.cursor/skills/tailwindcss-development/SKILL.md Adds mirrored Tailwind skill
.cursor/skills/phpunit-laravel/SKILL.md Adds mirrored PHPUnit skill
.cursor/skills/laravel-sail/SKILL.md Adds mirrored Sail skill
.cursor/skills/laravel-pint/SKILL.md Adds mirrored Pint skill
.cursor/skills/fluxui-free-development/SKILL.md Adds mirrored Flux UI (free) skill
.cursor/skills/fluxui-pro-development/SKILL.md Adds mirrored Flux UI (pro) skill
.claude/agents/research-skill.agent.md Adds mirrored agent definition
.claude/agents/research-mcp.agent.md Adds mirrored agent definition
.claude/agents/laravel-package.agent.md Adds mirrored agent definition
.claude/agents/sync-agents.md Adds mirrored maintainer agent
.claude/agents/sync-skills.md Adds mirrored maintainer agent
.claude/skills/skill-template/SKILL.md Adds mirrored skill template
.claude/skills/skill-research/SKILL.md Adds mirrored skill-research skill
.claude/skills/laravel-research/SKILL.md Adds mirrored laravel-research skill
.claude/skills/agentic-programming/SKILL.md Adds mirrored repo setup skill
.claude/skills/sync-agents/SKILL.md Adds mirrored sync-agents skill
.claude/skills/sync-skills/SKILL.md Adds mirrored sync-skills skill
.claude/skills/tailwindcss-development/SKILL.md Adds mirrored Tailwind skill
.claude/skills/phpunit-laravel/SKILL.md Adds mirrored PHPUnit skill
.claude/skills/laravel-sail/SKILL.md Adds mirrored Sail skill
.claude/skills/laravel-pint/SKILL.md Adds mirrored Pint skill
.claude/skills/fluxui-free-development/SKILL.md Adds mirrored Flux UI (free) skill
.claude/skills/fluxui-pro-development/SKILL.md Adds mirrored Flux UI (pro) skill

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


## Replication rules

1. **Build** — In each agent file’s **body** (after opening YAML), expand **`![[templates/...]]`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

The literal ![[templates/...]] embed example is being interpreted by the mirror builder and expanded into an HTML "missing" comment in the IDE copies (see .github/.cursor/.claude mirrors). To keep the docs readable and avoid accidental embed expansion, rephrase this to avoid the exact ![[...]] syntax (or escape it), then re-run scripts/regenerate-ide-mirrors.py so mirrors are clean.

Copilot uses AI. Check for mistakes.
Comment on lines +20 to +21
1. **Build** — In each agent file’s **body** (after opening YAML), expand **`<!-- missing: .steering/templates/....md -->
`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

This file contains an embedded <!-- missing: .steering/templates/....md --> artifact (and a line break inside the backticks), which makes the replication rules hard to read. This appears to come from expanding a placeholder ![[templates/...]] example during mirroring; adjust the source text in .steering/skills/sync-agents/SKILL.md to avoid literal embed syntax and regenerate mirrors.

Copilot uses AI. Check for mistakes.
Comment on lines +20 to +21
1. **Build** — In each agent file’s **body** (after opening YAML), expand **`<!-- missing: .steering/templates/....md -->
`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

This file contains an embedded <!-- missing: .steering/templates/....md --> artifact (and a line break inside the backticks), which makes the replication rules hard to read. This appears to come from expanding a placeholder ![[templates/...]] example during mirroring; adjust the source text in .steering/skills/sync-agents/SKILL.md to avoid literal embed syntax and regenerate mirrors.

Copilot uses AI. Check for mistakes.
Comment on lines +20 to +21
1. **Build** — In each agent file’s **body** (after opening YAML), expand **`<!-- missing: .steering/templates/....md -->
`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

This file contains an embedded <!-- missing: .steering/templates/....md --> artifact (and a line break inside the backticks), which makes the replication rules hard to read. This appears to come from expanding a placeholder ![[templates/...]] example during mirroring; adjust the source text in .steering/skills/sync-agents/SKILL.md to avoid literal embed syntax and regenerate mirrors.

Suggested change
1. **Build** — In each agent file’s **body** (after opening YAML), expand **`<!-- missing: .steering/templates/....md -->
`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
1. **Build** — In each agent file’s **body** (after opening YAML), expand **`![[templates/...]]`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +16
---
title:
org:
package:
github_url:
docs_url:
composer_require: composer require
author:
latest_release:
release_date:
packagist_url:
stars:
forks:
tags: [laravel, packages]
announce_date: ''
laravel_news_url: ''
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

downloads_30d is referenced in the Field-to-Source Mapping, but it's missing from the frontmatter keys. Add a downloads_30d: field (or remove it from the mapping) so the template/spec is self-consistent and agents can fill all documented fields.

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +8
who_can_use: Copilot Pro/Pro+/Business/Enterprise
tags: [github-copilot, agents, custom-agents, cloud-agent, mcp]
related: [[Github Copilot/Memories]]
---
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

The related link uses [[Github Copilot/Memories]], but other steering docs use the path-style [[github-copilot/...]] (e.g. .steering/cursor/Plugins.md:10). Align the link casing/path so Obsidian links resolve consistently.

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +10
tags: [copilot, agents, environment, github-actions, runners]
related:
- [[Github Copilot/Agents]]
- [[Github Copilot/Agent MCP]]
- [[Github Copilot/Skills]]
---
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

These related wikilinks use [[Github Copilot/...]], but other steering docs use the path-style [[github-copilot/...]] (e.g. .steering/cursor/Plugins.md:10). Align the link casing/path so Obsidian links resolve consistently.

Copilot uses AI. Check for mistakes.
Comment on lines +7 to +10
latest_commit: 67ae723a23ba880e3e5c8a3e5e2320092024476e (2026-04-02: Move package field into metadata map)
tags: [copilot-plugins, deep-wiki, documentation, vitepress, mermaid, agents, skills, onboarding]
related: [[Github Copilot/Plugins]], [[Github Copilot/Skills]], [[Skills/Skill Creator]], [[Agent Sync]]
---
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

These wikilinks use [[Github Copilot/...]], but other steering docs use the path-style [[github-copilot/...]] (e.g. .steering/cursor/Plugins.md:10). Align the link casing/path so Obsidian links resolve consistently.

Copilot uses AI. Check for mistakes.
Comment on lines +11 to +14
related:
- [["GitHub Copilot/Agents"]]
- [["GitHub Copilot/Memories"]]
---
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

In the YAML frontmatter, related entries are written as nested lists (e.g. [ ["GitHub Copilot/Agents"] ]) instead of strings like other files’ related fields. If any tooling expects related to be a list of strings, this will break. Consider making these string values (for example quoted [[...]] links) and aligning their path/casing with the rest of .steering.

Copilot uses AI. Check for mistakes.
Comment on lines 13 to +19
## Agents

| Agent | Trigger | Output |
|-------|---------|--------|
| `laravel-package` | `/laravel-package <vendor/package>` | `.steering/laravel-packages/<vendor>__<package>.md` |
| `skill-research` | `/skill-research <github-url-to-skill>` | `.steering/skills/<owner>__<skill-name>.md` |
| `mcp-research` | `/mcp-research <url>` | `mcps/<owner>__<name>.md` |
| `research-skill` | `/research-skill <url-to-skill-directory>` | `.steering/skills/<namespace>__<skill-name>.md` |
| `research-mcp` | `/research-mcp <url>` | `.steering/mcps/<owner>__<name>.md` |
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

The repo now includes the /idea agent (.steering/agents/idea.agent.md), but it isn't listed in the Agents table. Consider adding an idea row (trigger + output path under .steering/ideas/) so users can discover it from the README.

Copilot uses AI. Check for mistakes.
@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@copilot apply changes based on the comments in this thread

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 17

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (18)
.steering/templates/laravel-package.md-101-103 (1)

101-103: ⚠️ Potential issue | 🟡 Minor

Fix markdown template lint issues in generated scaffold.

The API block is missing a fence language, and the Laravel News resource link is empty. Both create avoidable lint failures in generated docs.

Suggested markdown fixes
-**API** (if applicable):
-```
+**API** (if applicable):
+```http
 POST /api/v1/package/upload/example-importer

@@
-- Laravel News Article # if featured
+- Laravel News Article # if featured

</details>


Also applies to: 126-126

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.steering/templates/laravel-package.md around lines 101 - 103, Update the
markdown template to fix lint issues by adding a fence language to the API code
block and wiring the Laravel News link to the template variable: change the
plain fenced block containing "POST /api/v1/package/upload/example-importer" to
use a language specifier (e.g., "http") and replace the empty link label
"Laravel News Article" with "Laravel News Article".
Locate these in .steering/templates/laravel-package.md (the API code block and
the Laravel News link) and ensure the template outputs a fenced block like
http ... and uses the {{laravel_news_url}} variable for the link.


</details>

</blockquote></details>
<details>
<summary>.steering/skills/laravel-pint/SKILL.md-16-16 (1)</summary><blockquote>

`16-16`: _⚠️ Potential issue_ | _🟡 Minor_

**Remove the incorrect `bin` subcommand from the Sail invocation.**

Line 16 uses `./vendor/bin/sail bin pint --dirty`, but Sail's CLI does not include a `bin` subcommand. The correct invocation is `./vendor/bin/sail pint --dirty`, which directly proxies to `php vendor/bin/pint` inside the container. As documented, the current command will fail.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/skills/laravel-pint/SKILL.md at line 16, Update the Sail
invocation in SKILL.md: replace the incorrect command string "./vendor/bin/sail
bin pint --dirty" with the correct "./vendor/bin/sail pint --dirty" (and keep
the note about adding "--format agent" when appropriate); remove the rogue "bin"
subcommand so Sail correctly proxies to php vendor/bin/pint inside the
container.
```

</details>

</blockquote></details>
<details>
<summary>.claude/skills/agentic-programming/SKILL.md-30-38 (1)</summary><blockquote>

`30-38`: _⚠️ Potential issue_ | _🟡 Minor_

**Specify fence languages for command examples.**

The two fenced blocks are missing language identifiers (MD040), which can fail markdown lint in strict docs pipelines.


<details>
<summary>Suggested markdown fix</summary>

```diff
-```
+```text
 /laravel-package <vendor/package>
 ```
@@
-```
+```text
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/agentic-programming/SKILL.md around lines 30 - 38, The two
fenced code blocks showing the command examples (the blocks containing
"/laravel-package <vendor/package>" and "/laravel-package
spatie/laravel-markdown-response") are missing fence language identifiers;
update each triple-backtick fence to include a language label (e.g., add "text"
so they become ```text) to satisfy MD040 linting and ensure the examples are
treated as plain text.


</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/Memories.md-61-61 (1)</summary><blockquote>

`61-61`: _⚠️ Potential issue_ | _🟡 Minor_

**Normalize “GitHub” capitalization in related note link.**

Line 61 uses `[[Github Copilot]]`; prefer `GitHub` for naming consistency and to avoid potential wiki-link mismatch.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Memories.md at line 61, The wiki link text uses
incorrect capitalization: replace the link label [[Github Copilot]] with
[[GitHub Copilot]] to normalize branding and avoid link mismatches; update the
occurrence in Memories.md (look for the exact string "[[Github Copilot]]") so
all references use "GitHub" capitalization consistently.
```

</details>

</blockquote></details>
<details>
<summary>.cursor/skills/agentic-programming/SKILL.md-30-38 (1)</summary><blockquote>

`30-38`: _⚠️ Potential issue_ | _🟡 Minor_

**Add languages to fenced code blocks for markdownlint compliance.**

Line 30 and Line 36 use unlabeled fenced blocks, which triggers MD040 and reduces editor/renderer clarity.

<details>
<summary>Suggested fix</summary>

```diff
-```
+```text
 /laravel-package <vendor/package>
 ```
@@
-```
+```text
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/agentic-programming/SKILL.md around lines 30 - 38, The
unlabeled fenced code blocks containing the commands "/laravel-package
<vendor/package>" and the example "/laravel-package
spatie/laravel-markdown-response" should be labeled for markdownlint (MD040);
update both triple-backtick blocks to include a language identifier (use "text")
so they become "```text" to improve linting and renderer/editor clarity while
leaving the content unchanged.


</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/plugins/Deep Wiki.md-119-120 (1)</summary><blockquote>

`119-120`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix malformed internal links in resources section.**

Line 119 and Line 120 mix Markdown link syntax with wiki-link syntax, which likely renders as broken links.

<details>
<summary>Suggested fix</summary>

```diff
-- [Copilot Plugins Guide]([[GitHub Copilot/Plugins]])
-- [Skills Guide]([[GitHub Copilot/Skills]])
+- [[GitHub Copilot/Plugins|Copilot Plugins Guide]]
+- [[GitHub Copilot/Skills|Skills Guide]]
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/plugins/Deep Wiki.md around lines 119 - 120, The
two resource links currently use mixed Markdown and wiki-link syntax ("[Copilot
Plugins Guide]([[GitHub Copilot/Plugins]])" and "[Skills Guide]([[GitHub
Copilot/Skills]])"); fix them by using a consistent link format—either convert
to standard Markdown like [Copilot Plugins Guide](/GitHub%20Copilot/Plugins) and
[Skills Guide](/GitHub%20Copilot/Skills) or to pure wiki-links like [[GitHub
Copilot/Plugins|Copilot Plugins Guide]] and [[GitHub Copilot/Skills|Skills
Guide]] so the links render correctly; update the lines containing the link
texts "Copilot Plugins Guide" and "Skills Guide" accordingly.
```

</details>

</blockquote></details>
<details>
<summary>.claude/skills/skill-template/SKILL.md-25-32 (1)</summary><blockquote>

`25-32`: _⚠️ Potential issue_ | _🟡 Minor_

**Add fenced code languages to satisfy markdown lint.**  
The code fences at Line 25 and Line 63 are missing language identifiers (`MD040`).

<details>
<summary>💡 Proposed fix</summary>

```diff
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
 ├── scripts/          # Optional: Executable code (e.g., extract.py)
 ├── references/       # Optional: Docs (e.g., REFERENCE.md)
 ├── assets/           # Optional: Templates, images, data
 └── ...               # Additional files
 ```
@@
-```
+```bash
 skills-ref validate ./my-skill
 ```
```
</details>




Also applies to: 63-65

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/skill-template/SKILL.md around lines 25 - 32, The fenced code
blocks in SKILL.md lack language identifiers (MD040); update the first block
showing the directory tree to use a language tag like "text" (replace the
opening withtext) and update the command block at lines 63-65 to include
a language tag such as "bash" (replace the opening withbash) so both
code fences satisfy the markdown lint rule; ensure you only change the opening
fence lines for the blocks that contain the directory listing and the
"skills-ref validate ./my-skill" command.


</details>

</blockquote></details>
<details>
<summary>.steering/cursor/Plugins.md-95-95 (1)</summary><blockquote>

`95-95`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix inconsistent path reference for `sync-skills` doc.**

Line 95 mixes a rooted path with a non-rooted one (`agents/sync-skills.md`), which is easy to misread as a different location. Use the full repo-relative path consistently.



<details>
<summary>Suggested doc fix</summary>

```diff
-| `.steering/skills/sync-skills/SKILL.md` (or `agents/sync-skills.md`) | How **steering** replicates skills/agents into IDE paths (parallel concern to “install a plugin”). |
+| `.steering/skills/sync-skills/SKILL.md` (or `.steering/agents/sync-skills.md`) | How **steering** replicates skills/agents into IDE paths (parallel concern to “install a plugin”). |
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/cursor/Plugins.md at line 95, The table row mixes a nested
SKILL.md path and a flat agents path; update the second entry to use the full
repo-relative nested path to match the first. Replace `agents/sync-skills.md`
with `agents/sync-skills/SKILL.md` (so both entries reference
`.steering/skills/sync-skills/SKILL.md` style vs `agents/sync-skills/SKILL.md`
consistently) in the table cell for the sync-skills documentation.
```

</details>

</blockquote></details>
<details>
<summary>.claude/skills/laravel-research/SKILL.md-54-54 (1)</summary><blockquote>

`54-54`: _⚠️ Potential issue_ | _🟡 Minor_

**Hardcoded `dev-master` branch assumption may fail for modern packages.**

Line 54 assumes Packagist JSON uses `versions.dev-master.authors[0].name`, but many Laravel packages now use `main` or other default branch names. This could cause author field resolution to fail silently.




<details>
<summary>💡 Suggested improvement for robustness</summary>

Consider updating the instruction to handle multiple possible default branch names:

```diff
-| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `versions.dev-master.authors[0].name` |
+| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → try `versions.dev-main`, `versions.dev-master`, or latest version → `authors[0].name` |
```

Or instruct agents to check the package's default branch first, then use that branch's version data.
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/laravel-research/SKILL.md at line 54, The mapping for the
`author` field currently hardcodes `versions.dev-master.authors[0].name`, which
breaks when a package's default branch is not `dev-master`; update the lookup in
the agent flow to first determine the package's default branch (or inspect
`package`/`package["default-branch"]` if available) and then use
`versions[<default-branch>].authors[0].name`, or fall back to a robust search
over `versions` keys (e.g., prefer `dev-<branch>` matching the default or the
first `authors` entry in a semver-sorted/priority list) so `author` resolution
works for `main`, `master`, or any other branch names instead of only
`dev-master`.
```

</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/SDK.md-30-37 (1)</summary><blockquote>

`30-37`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix markdownlint violations in table and code fence formatting.**

The table and fenced block formatting will keep triggering CI/editor lint noise. Add blank lines around the table and specify a language for the fenced block.



<details>
<summary>💡 Proposed patch</summary>

```diff
 ## Key Features (from SKILL.md commits)
 - **Architecture**: Transport modes (stdio/TCP).
 - **Hooks**: All 6 lifecycle hooks (pre/post tool use, user prompt, session start/end, error handling) with multi-language examples.
 - **BYOK (Bring Your Own Keys)**: Provider configs (OpenAI, Azure OpenAI, Anthropic, Ollama). Reference table + Azure Managed Identity pattern.
 - **Authentication**: Priority order, OAuth GitHub App, token types, disable auto-login.
 - **Session Persistence**: Resume options, session ID best practices, persisted data, infinite sessions.
 - **MCP Server Integration**: Local/HTTP configs (all fields), debugging (MCP Inspector).
 - **Deployment Patterns**:
+
   | Pattern | Description |
   |---------|-------------|
   | Local CLI | `copilot-sdk run` |
   | External Server | TCP/HTTP endpoints |
   | Bundled CLI | Embed in apps |
   | Docker Compose | Multi-container |
   | Session Isolation | Prod checklist |
+
 - **Permissions/Input Handlers**: Deny-by-default model.
 - **SDK vs CLI Comparison**: Feature table + workarounds.
 - **Debugging**: Common issues table, connection states.

 ## Directory Structure
-```
+```text
 .github/skills/copilot-sdk/
 ├── SKILL.md          # Main instructions (~900 lines)
 └── references/       # Supporting docs/examples
     └── (various files for tests/acceptance criteria)
 ```
```
</details>


Also applies to: 42-47

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/SDK.md around lines 30 - 37, The Markdown has lint
violations: add a blank line before and after the table starting with "| Pattern
| Description |" to separate it from surrounding text, and update the fenced
code block shown (the triple-backtick block containing
".github/skills/copilot-sdk/ ...") to include a language identifier (e.g.,

fence as well. Locate the table and the fenced block in the document (the table
rows: "Local CLI | `copilot-sdk run`", "External Server | TCP/HTTP endpoints",
etc., and the code fence containing the directory tree) and apply these
formatting changes so markdownlint no longer flags them.
.github/skills/sync-agents/SKILL.md-20-21 (1)

20-21: ⚠️ Potential issue | 🟡 Minor

Fix malformed inline code/bold formatting for the missing-template marker.

The current newline split inside the emphasized code marker is hard to read and may render inconsistently.

💡 Proposed patch
-1. **Build** — In each agent file’s **body** (after opening YAML), expand **`<!-- missing: .steering/templates/....md -->
-`** by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
+1. **Build** — In each agent file’s **body** (after opening YAML), expand `<!-- missing: .steering/templates/....md -->` by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/sync-agents/SKILL.md around lines 20 - 21, Fix the malformed
inline code/bold formatting by keeping the missing-template marker on a single
inline span instead of split across a newline: replace the broken emphasized
segment with a single inline code/bold instance for the marker `<!-- missing:
.steering/templates/....md -->` in .github/skills/sync-agents/SKILL.md; ensure
the text that describes the behavior for `research-skill.agent.md` and the
`.cursor/agents/` output remains intact, and avoid inserting a newline inside
the code span so the marker renders consistently.
.cursor/skills/tailwindcss-development/SKILL.md-29-30 (1)

29-30: ⚠️ Potential issue | 🟡 Minor

Clarify v4 configuration guidance: tailwind.config.js is optional legacy support, not unsupported.

Current phrasing suggests tailwind.config.js is unnecessary in v4, which overstates the situation. In reality, v4 is CSS-first by default using @theme and related directives, but tailwind.config.js remains supported via the @config directive for backward compatibility. Adjust the wording to reflect this distinction: the default/recommended path is CSS-first; legacy config is optional when needed.

Proposed wording update
-In Tailwind v4, configuration is CSS-first using the `@theme` directive — no separate `tailwind.config.js` file is needed:
+In Tailwind v4, configuration is CSS-first by default, using the `@theme` directive in your CSS file. Legacy `tailwind.config.js` files are still supported via `@config` for compatibility when needed:

Also applies to: 118-118

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/tailwindcss-development/SKILL.md around lines 29 - 30, Update
the wording in the "Tailwind v4" note to clarify that Tailwind v4 is CSS-first
by default using the `@theme` directive while preserving support for legacy
tailwind.config.js via the `@config` directive; specifically, replace the current
sentence that implies tailwind.config.js is unnecessary with a line stating that
the recommended/default path is CSS-first (`@theme`) but tailwind.config.js
remains supported optionally for backward compatibility via `@config`. Include
both identifiers (`@theme` and `@config`) and the filename tailwind.config.js in the
revised sentence so readers know how to opt into legacy config when needed.
.steering/github-copilot/Settings.md-57-63 (1)

57-63: ⚠️ Potential issue | 🟡 Minor

Add a blank line before the table to satisfy markdownlint (MD058).
At Line 58, the table starts immediately after the heading block. Insert one empty line before the table.

Proposed fix
 ### Variable Substitution
+
 | Syntax | Example |
 |--------|---------|
 | `$VAR` | `$COPILOT_MCP_API_KEY` |
 | `${VAR}` | `${COPILOT_MCP_API_KEY}` |
 | `${VAR:-default}` | `${COPILOT_MCP_API_KEY:-fallback}` |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Settings.md around lines 57 - 63, Insert a single
blank line between the "Variable Substitution" heading and the following table
to satisfy markdownlint rule MD058; update the markdown around the "Variable
Substitution" heading so the table (the pipe-delimited block starting with "|
Syntax | Example |") is separated by one empty line from the heading.
.steering/agents/sync-agents.md-23-23 (1)

23-23: ⚠️ Potential issue | 🟡 Minor

Avoid trailing spaces inside code spans to satisfy markdownlint.

Line 23 uses code spans like ## and # with trailing spaces, which triggers MD038. Consider replacing the space with an explicit marker (for example ##<space> and #<space>).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/sync-agents.md at line 23, The markdown uses code spans
with trailing spaces (e.g., "## " and "# ") which triggers MD038; update those
spans in .steering/agents/sync-agents.md to avoid trailing spaces by replacing
them with an explicit marker such as "##<space>" and "#<space>" (or use
backticks around the marker without the trailing literal space), ensuring all
occurrences of the symbols `## ` and `# ` are replaced so markdownlint no longer
flags MD038.
README.md-111-130 (1)

111-130: ⚠️ Potential issue | 🟡 Minor

Add languages to fenced code blocks.

Line 111, Line 142, and Line 148 use unlabeled fenced blocks, which triggers MD040 and can fail strict markdown linting.

Suggested fix
-```
+```text
 .steering/
 ...
-```
+```

-```
+```text
 /research-skill https://example.com/org/repo/tree/main/path/to/skill
-```
+```

-```
+```text
 .steering/skills/<namespace>__<skill-name>.md
-```
+```

Also applies to: 142-150

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 111 - 130, The README.md contains unlabeled fenced
code blocks (the directory tree block starting with ".steering/", the
"/research-skill https://example.com/..." example, and the
".steering/skills/<namespace>__<skill-name>.md" example) which trigger MD040;
update each triple-backtick fence to include a language identifier (e.g.,
```text) so the fences become ```text ... ``` for all three occurrences, leaving
the block contents unchanged.
.steering/github-copilot/Agent MCP.md-6-6 (1)

6-6: ⚠️ Potential issue | 🟡 Minor

Normalize “Github” to “GitHub” in wiki links.

Line 6 and Line 123 use [[Github ...]]; use GitHub casing for platform-name consistency.

Also applies to: 123-123

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Agent MCP.md at line 6, Update the wiki link casing
from "Github" to "GitHub" for consistency by replacing occurrences like
"[[Github Copilot/Agents]]" and "[[Github Copilot/Skills]]" (and any other
"[[Github ...]]" links, e.g., the second occurrence at the other location) with
"[[GitHub Copilot/Agents]]" and "[[GitHub Copilot/Skills]]" respectively; ensure
all instances of the token "Github Copilot" in the document are normalized to
"GitHub Copilot" so link targets and display text use the correct platform
capitalization.
.steering/github-copilot/Agent MCP.md-46-50 (1)

46-50: ⚠️ Potential issue | 🟡 Minor

Fix markdown table spacing to satisfy lint.

Line 46 and Line 53 start tables without the required surrounding blank lines, which will keep MD058 warnings active.

Suggested fix
 ### Server Types
+
 | Type | Config Keys | Example |
 |------|-------------|---------|
 | Local (command) | `command`, `args[]`, `env`, `cwd`, `tools[]` | `npx `@sentry/mcp-server-sentry`` |
 | Remote SSE | `type: "sse"`, `url`, `headers`, `tools[]` | Cloudflare SSE endpoint |
 | Remote Streamable HTTP | `type: "streamable-http"`, `url`, `headers`, `tools[]` | OAuth not supported |
+
 ## Variable Substitution
+
 | Syntax | Example |
 |--------|---------|
 | `$VAR` | `$COPILOT_MCP_API_KEY` |
 | `${VAR}` | `${COPILOT_MCP_API_KEY}` |
 | `${VAR:-default}` | `${COPILOT_MCP_API_KEY:-fallback}` |

Also applies to: 53-57

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Agent MCP.md around lines 46 - 50, Add the required
blank lines surrounding the Markdown tables to satisfy MD058: insert an empty
line immediately before the table that starts with the row "Type | Config Keys |
Example" (the table containing "Local (command) | `command`, `args[]`, `env`,
`cwd`, `tools[]`") and an empty line immediately after its closing row, and do
the same for the second table that begins at the later block (lines containing
"Remote SSE | `type: \"sse\"`, `url`, `headers`, `tools[]`" and "Remote
Streamable HTTP | `type: \"streamable-http\"`, `url`, `headers`, `tools[]`") so
each table is separated by blank lines from surrounding content.
.claude/skills/livewire-development/SKILL.md-71-71 (1)

71-71: ⚠️ Potential issue | 🟡 Minor

Use {{ $count }} instead of @{{ $count }} to render the Livewire property.

The @{{ }} syntax tells Blade to not interpret the expression, outputting literal braces for JavaScript frameworks. For Livewire properties in Blade, use {{ $count }} directly. Since this file is mirrored, apply the fix in the sync source and regenerate.

Proposed fix
-    <button wire:click="increment">Count: @{{ $count }}</button>
+    <button wire:click="increment">Count: {{ $count }}</button>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/livewire-development/SKILL.md at line 71, Replace the escaped
Blade expression @{{ $count }} with the proper Blade echo {{ $count }} in the
Livewire button template (the element containing wire:click="increment" and
$count) so Livewire renders the property correctly; because this file is
mirrored, make the same change in the sync source and regenerate the mirrored
file.
🧹 Nitpick comments (11)
.github/skills/skill-research/skill-template.md (1)

63-65: Specify language for the fenced code block.

The validation command example would benefit from syntax highlighting by specifying the bash language identifier.

🔧 Proposed fix
 # Validation
 Use [skills-ref](https://github.com/agentskills/agentskills/tree/main/skills-ref):
-```
+```bash
 skills-ref validate ./my-skill
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.github/skills/skill-research/skill-template.md around lines 63 - 65, Add
the bash language identifier to the fenced code block containing the example
command "skills-ref validate ./my-skill" so the block becomes a bash-highlighted
snippet; locate the fenced block in skill-template.md that currently starts with
and change it tobash to enable syntax highlighting for the command
example.


</details>

</blockquote></details>
<details>
<summary>.steering/skills/laravel-research/SKILL.md (1)</summary><blockquote>

`9-46`: **Consider specifying language for the fenced code block.**

The template code block would benefit from a language identifier for better syntax highlighting and tooling support.

<details>
<summary>📝 Proposed fix</summary>

```diff
 Use this EXACT template for output:
 
-```markdown
+````markdown
 ---
 org: VENDOR
 package: package-name
@@ -43,7 +43,7 @@
 ## Resources
 - [[Laravel Packages]] (related)
-```
+````
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.steering/skills/laravel-research/SKILL.md around lines 9 - 46, The
top-level fenced block in SKILL.md currently lacks a language specifier; update
the opening fence from tomarkdown so the entire template (including
frontmatter, bash snippet placeholders like composer_require, and CODE_EXAMPLE)
benefits from Markdown highlighting, and ensure the closing fence matches
(markdown ... ), leaving placeholders (composer_require, CODE_EXAMPLE)
unchanged.


</details>

</blockquote></details>
<details>
<summary>.github/workflows/verify-steering-sync.yml (1)</summary><blockquote>

`3-15`: **Add a `pull_request` trigger for earlier/consistent PR feedback.**

This currently runs only on `push`/manual dispatch. Adding `pull_request` (with the same path filters) makes sync drift checks more reliable in PR workflows.



<details>
<summary>Suggested workflow trigger update</summary>

```diff
 on:
   workflow_dispatch:
+  pull_request:
+    paths:
+      - ".steering/**"
+      - ".github/workflows/verify-steering-sync.yml"
+      - "scripts/regenerate-ide-mirrors.py"
+      - ".github/agents/**"
+      - ".github/skills/**"
+      - ".cursor/agents/**"
+      - ".cursor/skills/**"
+      - ".claude/**"
   push:
     paths:
       - ".steering/**"
       - ".github/workflows/verify-steering-sync.yml"
       - "scripts/regenerate-ide-mirrors.py"
       - ".github/agents/**"
       - ".github/skills/**"
       - ".cursor/agents/**"
       - ".cursor/skills/**"
       - ".claude/**"
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/verify-steering-sync.yml around lines 3 - 15, Update the
GitHub Actions trigger block in the verify-steering-sync workflow to include a
pull_request event with the same path filters as the existing push event so PRs
run the same sync drift checks; edit the on: block in
.github/workflows/verify-steering-sync.yml to add pull_request (mirroring the
paths list currently under push) so that changes under ".steering/**",
".github/workflows/verify-steering-sync.yml",
"scripts/regenerate-ide-mirrors.py", ".github/agents/**", ".github/skills/**",
".cursor/agents/**", ".cursor/skills/**", and ".claude/**" will trigger the
workflow for pull requests as well.
```

</details>

</blockquote></details>
<details>
<summary>.steering/agents/laravel-package.agent.md (1)</summary><blockquote>

`27-30`: **Prefer inlining the mapping instead of Obsidian transclusion in canonical agent spec.**

Line 29 introduces a render-time dependency (`![[...]]`) in the source-of-truth agent. Inlining this section here would make mirrors and non-Obsidian consumers more robust.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/laravel-package.agent.md around lines 27 - 30, The
canonical agent spec currently uses an Obsidian transclusion token
(![[templates/laravel-package#Field-to-Source Mapping]]) under the "##
Field-to-Source Mapping" section which creates a render-time dependency; replace
that transclusion by inlining the full Field-to-Source Mapping content directly
into the "## Field-to-Source Mapping" section so the spec is self-contained and
usable by mirrors and non-Obsidian consumers (remove the ![[...]] line and paste
the mapping text that lives in templates/laravel-package#Field-to-Source
Mapping).
```

</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/Agents.md (1)</summary><blockquote>

`7-7`: **Inconsistent capitalization in wiki-link.**

The related link uses `[[Github Copilot/Memories]]` with lowercase "hub", but the official brand name is "GitHub" with capital "H". Consider updating for consistency.



<details>
<summary>📝 Suggested fix</summary>

```diff
-related: [[Github Copilot/Memories]]
+related: [[GitHub Copilot/Memories]]
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Agents.md at line 7, The wiki link "[[Github
Copilot/Memories]]" uses incorrect capitalization for "GitHub"; update the link
text to "[[GitHub Copilot/Memories]]" (and search for other occurrences of
"Github Copilot" to correct them similarly) so the brand name uses the proper
capital "H".
```

</details>

</blockquote></details>
<details>
<summary>.steering/agents/research-mcp.agent.md (1)</summary><blockquote>

`27-33`: **Add an explicit fallback path when GitHub MCP/DeepWiki is unavailable.**

This keeps the agent resilient in environments where those integrations are missing, while preserving preferred-source behavior.



<details>
<summary>Proposed resilience tweak</summary>

```diff
-  - **GitHub repo** (via GitHub MCP + DeepWiki):
+  - **GitHub repo** (prefer GitHub MCP + DeepWiki; fallback to direct GitHub/docs pages via browser/search):
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/research-mcp.agent.md around lines 27 - 33, Update the
"GitHub repo (via GitHub MCP + DeepWiki)" lookup to include an explicit fallback
path when those integrations are unavailable: if GitHub MCP/DeepWiki lookup
fails, fall back to (1) a direct git/github API probe of the repo URL derived
from metadata, (2) registry/package index lookups (npm/PyPI entry already
listed) for package metadata, and finally (3) mark the source as unavailable but
continue with the remaining checks (registry and official MCP docs). Ensure the
README/agent spec text is updated to describe this ordered fallback and that the
agent's discovery logic records which source succeeded or failed so
preferred-source behavior is preserved.
```

</details>

</blockquote></details>
<details>
<summary>.github/agents/sync-agents.md (2)</summary><blockquote>

`20-26`: **Consider highlighting the embed-syntax warning more prominently.**

Line 21 contains an important gotcha: "do not put illustrative embed examples in agent bodies as literal bracket pairs or the CI build will try to expand them." This warning is currently embedded mid-sentence in a parenthetical, where maintainers skimming the rules might miss it, leading to CI failures.



<details>
<summary>💡 Suggested structure for visibility</summary>

```diff
 1. **Build step (Obsidian embeds)** — In each `.steering/agents/*.md` **body** (after the first YAML frontmatter), expand wiki-style embeds allowed for that **output**:
-   - **Default:** only embeds whose path starts with **`templates/`** (optional **`#Heading`** to inline a single `## Heading` section). Paths resolve under **`.steering/`**. Embed syntax is Obsidian's wiki link with brackets (see steering README); do not put illustrative embed examples in agent bodies as literal bracket pairs or the CI build will try to expand them.
+   - **Default:** only embeds whose path starts with **`templates/`** (optional **`#Heading`** to inline a single `## Heading` section). Paths resolve under **`.steering/`**.
+   
+   > ⚠️ **Do not put illustrative embed examples** (like `![[example]]`) **in agent bodies** as literal text—the CI build will attempt to expand them. Use code blocks or escape syntax when documenting embeds.
+   
    - **`research-skill.agent.md` only:** embeds whose path starts with **`github-copilot/`** are expanded **only** when writing **`.cursor/agents/research-skill.agent.md`** (full body after that file's YAML frontmatter, same rules as `templates/`). For **`.github/agents/`** and **`.claude/agents/`**, replace those embeds with a short blockquote pointing at **`.steering/github-copilot/Skills.md`** so mirrors stay small and Obsidian syntax never ships to Copilot Cloud.
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/agents/sync-agents.md around lines 20 - 26, The warning about not
including illustrative Obsidian embed examples is easy to miss
mid-parenthetical; relocate and emphasize it at the top of the "Build step
(Obsidian embeds)" section so maintainers see it before details: extract the
sentence "do not put illustrative embed examples in agent bodies as literal
bracket pairs or the CI build will try to expand them." and place it as a
standalone, prominent caution immediately after the section heading (or before
the bullet list), and ensure it references the affected files/rules
(`.steering/agents/*.md`, `.cursor/agents/research-skill.agent.md`,
`templates/`, and `github-copilot/` behavior) so the constraint is unambiguous.
```

</details>

---

`22-22`: **Simplify the `research-skill.agent.md` special-case description.**

Line 22 is a 400+ character sentence combining the file name, embed pattern, destination-specific behavior, and rationale. Similar to the `sync-skills.md` complexity, this density may lead to errors during manual replication.



<details>
<summary>♻️ Proposed restructure</summary>

```diff
-   - **`research-skill.agent.md` only:** embeds whose path starts with **`github-copilot/`** are expanded **only** when writing **`.cursor/agents/research-skill.agent.md`** (full body after that file's YAML frontmatter, same rules as `templates/`). For **`.github/agents/`** and **`.claude/agents/`**, replace those embeds with a short blockquote pointing at **`.steering/github-copilot/Skills.md`** so mirrors stay small and Obsidian syntax never ships to Copilot Cloud.
+   - **`research-skill.agent.md` only:** embeds whose path starts with **`github-copilot/`** have destination-specific behavior:
+     - **`.cursor/agents/research-skill.agent.md`**: expand the embeds (same rules as `templates/`).
+     - **`.github/agents/`** and **`.claude/agents/`**: replace those embeds with a short blockquote pointing to `.steering/github-copilot/Skills.md` (keeps mirrors small, avoids shipping Obsidian syntax to Copilot Cloud).
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/agents/sync-agents.md at line 22, The sentence describing the
special-case for research-skill.agent.md is too long and dense; split and
simplify it so it's clearer and less error-prone: state first that in
research-skill.agent.md, embeds whose path starts with "github-copilot/" are
expanded only when writing ".cursor/agents/research-skill.agent.md" (full body
after that file’s YAML frontmatter, same rules as templates/), and then state
separately that for ".github/agents/" and ".claude/agents/" those same embeds
must be replaced with a short blockquote pointing at
".steering/github-copilot/Skills.md" so mirrors stay small and Obsidian syntax
never ships to Copilot Cloud.
```

</details>

</blockquote></details>
<details>
<summary>.github/skills/livewire-development/SKILL.md (1)</summary><blockquote>

`85-85`: **Break down the JavaScript API changes for readability.**

Line 85 is a 530-character sentence covering multiple JavaScript API migrations (property syntax, legacy hook mappings, three interceptor types). Developers scanning for v4 migration steps may struggle to extract actionable information from this dense format.



<details>
<summary>♻️ Proposed list structure</summary>

```diff
-- JavaScript: `$wire.$js('name', fn)` → `$wire.$js.name = fn`; legacy commit/request hooks map to the **interceptor** APIs — use **`$wire.intercept()` / `Livewire.interceptAction()`** (action lifecycle), **`$wire.interceptMessage()` / `Livewire.interceptMessage()`** (payload handling), and **`$wire.interceptRequest()` / `Livewire.interceptRequest()`** (HTTP request lifecycle) as appropriate.
+- JavaScript API changes:
+  - Property syntax: `$wire.$js('name', fn)` → `$wire.$js.name = fn`
+  - Legacy commit/request hooks now use **interceptor APIs**:
+    - `$wire.intercept()` / `Livewire.interceptAction()` — action lifecycle hooks
+    - `$wire.interceptMessage()` / `Livewire.interceptMessage()` — payload handling
+    - `$wire.interceptRequest()` / `Livewire.interceptRequest()` — HTTP request lifecycle
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/skills/livewire-development/SKILL.md at line 85, The sentence at
line 85 is too dense; split the single 530-character line into a clear, readable
list of migration items: 1) show the property-style replacement for
$wire.$js('name', fn) as $wire.$js.name = fn; 2) state that legacy
commit/request hooks now map to interceptor APIs and list each interceptor type
on its own line with both instance and global names: $wire.intercept() /
Livewire.interceptAction() (action lifecycle), $wire.interceptMessage() /
Livewire.interceptMessage() (payload handling), and $wire.interceptRequest() /
Livewire.interceptRequest() (HTTP request lifecycle); 3) ensure each bullet uses
the exact symbols ($wire.$js.name, $wire.intercept(),
Livewire.interceptAction(), etc.) so readers can quickly locate the
corresponding APIs.
```

</details>

</blockquote></details>
<details>
<summary>.steering/cursor/Hooks.md (1)</summary><blockquote>

`72-89`: **Optional: Consider rewording to reduce repetition.**

Three successive sentences begin with "**Agent**" (lines 72, 74, 82). While this is clear, you could improve flow by combining or varying the structure.



<details>
<summary>♻️ Suggested alternative structure</summary>

```diff
-**Agent** (Cmd+K / Agent chat) and **Tab** (inline completions) use **different** hook names.
-
-**Agent (representative set from Cursor docs):**
+Cursor provides different hook names for **Agent** (Cmd+K / Agent chat) versus **Tab** (inline completions).
+
+**Representative Agent events (from Cursor docs):**
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/cursor/Hooks.md around lines 72 - 89, The three consecutive lines
that start with "Agent" are repetitive; reword the header and combine the
representative hook list into a single sentence or heading, e.g., replace the
separate "Agent (representative set from Cursor docs):" and repeated "Agent"
lead-ins with one concise introduction like "Agent hooks (representative):"
followed by the table of hook names (sessionStart, sessionEnd, preToolUse,
postToolUse, postToolUseFailure, subagentStart, subagentStop,
beforeShellExecution, afterShellExecution, beforeMCPExecution,
afterMCPExecution, beforeReadFile, afterFileEdit, beforeSubmitPrompt,
preCompact, stop, afterAgentResponse, afterAgentThought), and similarly shorten
the Tab section to one line explaining when to use
beforeTabFileRead/afterTabFileEdit to avoid redundancy.
```

</details>

</blockquote></details>
<details>
<summary>.cursor/agents/sync-skills.md (1)</summary><blockquote>

`10-10`: **Simplify the source-of-truth explanation for readability.**

Line 10 packs multiple concepts into a 345-character sentence: canonical source, byte-identical replication, the `skill-research` exception, embed expansion rules, and a cross-reference to `sync-agents`. This density may lead to misinterpretation during manual syncing.



<details>
<summary>♻️ Proposed restructure for clarity</summary>

```diff
-**`.steering/`** holds canonical **agents** (`agents/`) and **packaged skills** (`skills/<name>/SKILL.md`), plus **`templates/skill.md`** (the skill spec). Packaged skills are **byte-identical** across `.cursor`, `.claude`, and `.github` **except** **`skill-research`**: **`![[github-copilot/...]]`** expands only in **`.cursor/skills/skill-research/`**; **`.github`** and **`.claude`** get a pointer to **`.steering/github-copilot/Skills.md`** instead. **Agents:** see **sync-agents** (includes the same **`github-copilot/`** rule for **`research-skill.agent.md`** on **`.cursor`** only).
+**`.steering/`** holds canonical **agents** (`agents/`), **packaged skills** (`skills/<name>/SKILL.md`), and **`templates/skill.md`** (the skill spec).
+
+Packaged skills replicate byte-identically across `.cursor`, `.claude`, and `.github` **except `skill-research`**:
+- **`.cursor/skills/skill-research/`**: `![[github-copilot/...]]` embeds are expanded.
+- **`.github`** and **`.claude`**: those embeds become a pointer to `.steering/github-copilot/Skills.md`.
+
+**Agents:** see **sync-agents** for similar `github-copilot/` handling on `research-skill.agent.md` (`.cursor` only).
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.cursor/agents/sync-skills.md at line 10, The sentence describing the
source-of-truth is too dense; split and clarify it into 2–3 short sentences that
state: (1) `.steering/` holds canonical agents (`agents/`), packaged skills
(`skills/<name>/SKILL.md`), and the skill spec template (`templates/skill.md`);
(2) packaged skills are byte-identical across `.cursor`, `.claude`, and
`.github` except for the `skill-research` case; and (3) for `skill-research`
explain that `![[github-copilot/...]]` expands only in
`.cursor/skills/skill-research/`, while `.github` and `.claude` point to
`.steering/github-copilot/Skills.md`, and add a short parenthetical pointer to
`sync-agents` for the agents rule and `research-skill.agent.md` as needed.
```

</details>

</blockquote></details>

</blockquote></details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `1a9ff859-8319-4057-ba4b-6b889b574ccf`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 5e51623985cc91600cfa4f7fc3d1186678412b9f and 8f78007bf0cef0ab752193d710120361575aed83.

</details>

<details>
<summary>⛔ Files ignored due to path filters (2)</summary>

* `scripts/__pycache__/regenerate-ide-mirrors.cpython-312.pyc` is excluded by `!**/*.pyc`
* `scripts/__pycache__/sync-boost-ai-skills.cpython-312.pyc` is excluded by `!**/*.pyc`

</details>

<details>
<summary>📒 Files selected for processing (123)</summary>

* `.claude/agents/idea.agent.md`
* `.claude/agents/laravel-package.agent.md`
* `.claude/agents/research-mcp.agent.md`
* `.claude/agents/research-skill.agent.md`
* `.claude/agents/sync-agents.md`
* `.claude/agents/sync-skills.md`
* `.claude/skills/agentic-programming/SKILL.md`
* `.claude/skills/fluxui-free-development/SKILL.md`
* `.claude/skills/fluxui-pro-development/SKILL.md`
* `.claude/skills/laravel-pint/SKILL.md`
* `.claude/skills/laravel-research/SKILL.md`
* `.claude/skills/laravel-sail/SKILL.md`
* `.claude/skills/livewire-development/SKILL.md`
* `.claude/skills/pest-testing/SKILL.md`
* `.claude/skills/phpunit-laravel/SKILL.md`
* `.claude/skills/skill-research/SKILL.md`
* `.claude/skills/skill-template/SKILL.md`
* `.claude/skills/sync-agents/SKILL.md`
* `.claude/skills/sync-skills/SKILL.md`
* `.claude/skills/tailwindcss-development/SKILL.md`
* `.cursor/agents/idea.agent.md`
* `.cursor/agents/laravel-package.agent.md`
* `.cursor/agents/research-mcp.agent.md`
* `.cursor/agents/research-skill.agent.md`
* `.cursor/agents/sync-agents.md`
* `.cursor/agents/sync-skills.md`
* `.cursor/skills/agentic-programming/SKILL.md`
* `.cursor/skills/fluxui-free-development/SKILL.md`
* `.cursor/skills/fluxui-pro-development/SKILL.md`
* `.cursor/skills/laravel-pint/SKILL.md`
* `.cursor/skills/laravel-research/SKILL.md`
* `.cursor/skills/laravel-sail/SKILL.md`
* `.cursor/skills/livewire-development/SKILL.md`
* `.cursor/skills/pest-testing/SKILL.md`
* `.cursor/skills/phpunit-laravel/SKILL.md`
* `.cursor/skills/skill-research/SKILL.md`
* `.cursor/skills/skill-template/SKILL.md`
* `.cursor/skills/sync-agents/SKILL.md`
* `.cursor/skills/sync-skills/SKILL.md`
* `.cursor/skills/tailwindcss-development/SKILL.md`
* `.github/agents/idea.agent.md`
* `.github/agents/laravel-package.agent.md`
* `.github/agents/research-mcp.agent.md`
* `.github/agents/research-skill.agent.md`
* `.github/agents/skill-research.agent.md`
* `.github/agents/sync-agents.md`
* `.github/agents/sync-skills.md`
* `.github/skills/agentic-programming/SKILL.md`
* `.github/skills/fluxui-free-development/SKILL.md`
* `.github/skills/fluxui-pro-development/SKILL.md`
* `.github/skills/laravel-pint/SKILL.md`
* `.github/skills/laravel-research/SKILL.md`
* `.github/skills/laravel-research/laravel-package-template.md`
* `.github/skills/laravel-sail/SKILL.md`
* `.github/skills/livewire-development/SKILL.md`
* `.github/skills/pest-testing/SKILL.md`
* `.github/skills/phpunit-laravel/SKILL.md`
* `.github/skills/skill-research/SKILL.md`
* `.github/skills/skill-research/skill-template.md`
* `.github/skills/sync-agents/SKILL.md`
* `.github/skills/sync-skills/SKILL.md`
* `.github/skills/tailwindcss-development/SKILL.md`
* `.github/workflows/sync-skill-template.yml`
* `.github/workflows/verify-steering-sync.yml`
* `.steering/README.md`
* `.steering/agents/idea.agent.md`
* `.steering/agents/laravel-package.agent.md`
* `.steering/agents/research-mcp.agent.md`
* `.steering/agents/research-skill.agent.md`
* `.steering/agents/sync-agents.md`
* `.steering/agents/sync-skills.md`
* `.steering/cursor/Agents.md`
* `.steering/cursor/Hooks.md`
* `.steering/cursor/Plugins.md`
* `.steering/cursor/Rules.md`
* `.steering/cursor/Skills.md`
* `.steering/github-copilot/Agent MCP.md`
* `.steering/github-copilot/Agentic Workflows.md`
* `.steering/github-copilot/Agents.md`
* `.steering/github-copilot/Environment.md`
* `.steering/github-copilot/Memories.md`
* `.steering/github-copilot/Plugins.md`
* `.steering/github-copilot/Prompts.md`
* `.steering/github-copilot/SDK.md`
* `.steering/github-copilot/Settings.md`
* `.steering/github-copilot/Skills.md`
* `.steering/github-copilot/plugins/Deep Wiki.md`
* `.steering/ideas/README.md`
* `.steering/laravel-packages/README.md`
* `.steering/laravel-packages/larastan__larastan.md`
* `.steering/laravel-packages/laravel__pint.md`
* `.steering/laravel-packages/livewire__flux.md`
* `.steering/laravel-packages/pestphp__pest.md`
* `.steering/mcp.json`
* `.steering/mcps/deepwiki__mcp.md`
* `.steering/mcps/github__github-mcp-server.md`
* `.steering/mcps/upstash__context7.md`
* `.steering/skills/.boost-ai-sync.json`
* `.steering/skills/README.md`
* `.steering/skills/SOURCES.md`
* `.steering/skills/fluxui-free-development/SKILL.md`
* `.steering/skills/fluxui-pro-development/SKILL.md`
* `.steering/skills/laravel-pint/SKILL.md`
* `.steering/skills/laravel-research/SKILL.md`
* `.steering/skills/laravel-sail/SKILL.md`
* `.steering/skills/livewire-development/SKILL.md`
* `.steering/skills/pest-testing/SKILL.md`
* `.steering/skills/phpunit-laravel/SKILL.md`
* `.steering/skills/skill-research/SKILL.md`
* `.steering/skills/sync-agents/SKILL.md`
* `.steering/skills/sync-agents/tdd.md`
* `.steering/skills/sync-skills/SKILL.md`
* `.steering/skills/tailwindcss-development/SKILL.md`
* `.steering/templates/AGENTS.md`
* `.steering/templates/agent.md`
* `.steering/templates/idea.md`
* `.steering/templates/laravel-package.md`
* `.steering/templates/skill.md`
* `README.md`
* `mcps/README.md`
* `scripts/regenerate-ide-mirrors.py`
* `scripts/sync-boost-ai-skills.py`
* `templates/agents.md`

</details>

<details>
<summary>💤 Files with no reviewable changes (7)</summary>

* .steering/laravel-packages/README.md
* .github/workflows/sync-skill-template.yml
* mcps/README.md
* .github/skills/laravel-research/laravel-package-template.md
* .github/agents/skill-research.agent.md
* templates/agents.md
* .steering/templates/skill.md

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment on lines +82 to +86
- Use `Route::livewire()` for full-page components (e.g., `Route::livewire('/posts/create', CreatePost::class)`); config keys renamed: `layout` → `component_layout`, `lazy_placeholder` → `component_placeholder`.
- `wire:model` now ignores child events by default (use `wire:model.deep` for old behavior); `wire:scroll` renamed to `wire:navigate:scroll`.
- Component tags must be properly closed; `wire:transition` now uses View Transitions API (modifiers removed).
- JavaScript: `$wire.$js('name', fn)` → `$wire.$js.name = fn`; legacy commit/request hooks map to the **interceptor** APIs — use **`$wire.intercept()` / `Livewire.interceptAction()`** (action lifecycle), **`$wire.interceptMessage()` / `Livewire.interceptMessage()`** (payload handling), and **`$wire.interceptRequest()` / `Livewire.interceptRequest()`** (HTTP request lifecycle) as appropriate.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

`For Livewire 4 (latest official docs), verify whether the following are valid and documented:

  1. Route::livewire() for full-page components
  2. $wire.intercept(), $wire.interceptMessage(), $wire.interceptRequest()
  3. Livewire.interceptAction(), Livewire.interceptMessage(), Livewire.interceptRequest()
  4. wire:model.deep and wire:navigate:scroll semantics
  5. Config keys: component_layout, component_placeholder, component_locations, component_namespaces, make_command, csp_safe
    Please provide official Livewire documentation links for each item and note any mismatches.`

💡 Result:

  1. Route::livewire() for full-page componentsValid + documented (v4.x). (livewire.laravel.com)
    Official docs:
https://livewire.laravel.com/docs/4.x/components
https://livewire.laravel.com/docs/4.x/navigate
  1. $wire.intercept(), $wire.interceptMessage(), $wire.interceptRequest()Valid + documented (v4.x) under Interceptors. (livewire.laravel.com)
    Official docs:
https://livewire.laravel.com/docs/4.x/javascript
  1. Livewire.interceptAction(), Livewire.interceptMessage(), Livewire.interceptRequest()Partially mismatched:
  • Livewire.interceptAction()Valid + documented
  • Livewire.interceptMessage()Valid + documented
  • Livewire.interceptRequest()NOT shown/documented in the interceptor API summary (the docs show global Action + Message interceptors, but for Request only show $wire.interceptRequest(...)). (livewire.laravel.com)
    Official docs:
https://livewire.laravel.com/docs/4.x/javascript
  1. wire:model.deep and wire:navigate:scroll semanticsValid + documented (v4.x):
  • wire:model.deep: .deep modifier makes wire:model listen to events bubbling from child elements. (livewire.laravel.com)
    Docs:
    https://livewire.laravel.com/docs/4.x/wire-model
    
  • wire:navigate:scroll: used to preserve scroll position of a scrollable persisted element across wire:navigate page navigations; page scroll is preserved by default, and wire:navigate:scroll is for individual persisted scroll containers. (livewire.laravel.com)
    Docs:
    https://livewire.laravel.com/docs/4.x/navigate
    
  1. Config keysAll valid + documented (v4.x):
  • component_layout, component_placeholder, component_locations, component_namespaces, make_command, csp_safe are all listed in the v4 upgrade/config changes. (livewire.laravel.com)
  • component_locations / component_namespaces are also documented in the Components guide. (livewire.laravel.com)
  • csp_safe is documented in CSP docs (enable CSP-safe mode via config). (livewire.laravel.com)
    Official docs:
https://livewire.laravel.com/docs/4.x/upgrading
https://livewire.laravel.com/docs/4.x/components
https://livewire.laravel.com/docs/4.x/csp

Citations:


Livewire.interceptRequest() does not exist in the official Livewire 4 API — use $wire.interceptRequest() instead.

The skill document recommends using Livewire.interceptRequest() for HTTP request lifecycle handling, but official Livewire 4 docs only document $wire.interceptRequest(). The global interceptor equivalents are Livewire.interceptAction() and Livewire.interceptMessage(), but there is no global Livewire.interceptRequest().

All other claims in the affected lines (Route::livewire(), $wire.intercept() methods, wire:model.deep, wire:navigate:scroll, and config keys) are valid and documented.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/livewire-development/SKILL.md around lines 82 - 86, The doc
incorrectly references a non-existent global API Livewire.interceptRequest();
update the text to instruct using the instance method $wire.interceptRequest()
for HTTP request lifecycle interception, and clarify that the global equivalents
only exist for actions/messages (Livewire.interceptAction() and
Livewire.interceptMessage()) — remove or replace any occurrences of
Livewire.interceptRequest() with $wire.interceptRequest() and add a short note
that no global Livewire.interceptRequest() exists.

…plate, and README

- Fix ![[templates/...]] expansion artifact in sync-agents SKILL.md source
  by rephrasing to use ![[path]] instead of the path that triggers expansion;
  regenerate all three IDE mirrors (.cursor, .claude, .github)
- Add missing downloads_30d: field to laravel-package.md template frontmatter
  to match existing field-to-source mapping table
- Align wikilink casing in .steering/github-copilot/ files:
  [[Github Copilot/...]] → [[github-copilot/...]] (Settings, Agent MCP,
  Agents, Environment, Skills, plugins/Deep Wiki)
- Fix Skills.md related field: change nested-list format [['...']] to
  plain string list consistent with other steering docs
- Add /idea agent row to README.md Agents table

Agent-Logs-Url: https://github.com/ChrisThompsonTLDR/agentic-programming/sessions/ea569959-ad40-4f33-b909-19aec198993a

Co-authored-by: ChrisThompsonTLDR <348801+ChrisThompsonTLDR@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 9, 2026

@copilot apply changes based on the comments in this thread

Applied all changes from the review thread in commit 08824cf:

  • Embed expansion artifact — Rephrased the ![[templates/...]] reference in .steering/skills/sync-agents/SKILL.md to ![[path]] (a generic placeholder that doesn't trigger the mirror builder's path expansion), then regenerated all three IDE mirrors (.cursor, .claude, .github).
  • downloads_30d — Added the missing downloads_30d: frontmatter key to .steering/templates/laravel-package.md to match the Field-to-Source Mapping table.
  • Wikilink casing — Changed [[Github Copilot/...]] / [[GitHub Copilot/...]][[github-copilot/...]] in Settings.md, Agent MCP.md, Agents.md, Environment.md, Skills.md, and plugins/Deep Wiki.md.
  • Skills.md related field — Fixed the nested-list [["..."]] format to plain quoted strings, consistent with other steering docs.
  • README Agents table — Added the idea agent row with trigger and output path.

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@BugBot run

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 08824cf. Configure here.

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

✅ Actions performed

Full review triggered.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

♻️ Duplicate comments (11)
.steering/mcp.json (1)

16-20: ⚠️ Potential issue | 🟠 Major

Use environment variable for GitHub authentication instead of hardcoded placeholder.

This issue was already identified in a previous review. Replace the hardcoded placeholder with environment-variable expansion following the documented MCP pattern: "Authorization": "Bearer ${GITHUB_PAT}".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/mcp.json around lines 16 - 20, The "github" configuration
currently hardcodes the placeholder token in the "Authorization" header; update
the "Authorization" value under the "github" object to use environment-variable
expansion (e.g., "Bearer ${GITHUB_PAT}") instead of "Bearer YOUR_GITHUB_PAT",
ensuring the project follows the documented MCP pattern and that deployments
provide GITHUB_PAT at runtime.
.github/skills/laravel-research/SKILL.md (2)

54-54: ⚠️ Potential issue | 🟠 Major

author resolution should not depend only on dev-master.

This rule can leave author empty for packages that publish metadata under dev-main. Please include a fallback.

Proposed fix
-| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `versions.dev-master.authors[0].name` |
+| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → first available of `versions.dev-master.authors[0].name` or `versions["dev-main"].authors[0].name` |

Run this read-only verification to confirm the branch-key variability and current rule usage:

#!/bin/bash
set -euo pipefail

echo "Current author rule in file:"
sed -n '50,58p' .github/skills/laravel-research/SKILL.md

echo
echo "Packagist version-key check:"
for pkg in laravel/pint livewire/flux larastan/larastan; do
  echo "=== $pkg ==="
  curl -fsSL "https://packagist.org/packages/${pkg}.json" | jq -r '
    .package.versions as $v |
    {
      has_dev_master: ($v["dev-master"] != null),
      has_dev_main:   ($v["dev-main"] != null),
      author_dev_master: ($v["dev-master"].authors[0].name // null),
      author_dev_main:   ($v["dev-main"].authors[0].name // null)
    }'
done

Expected result: at least one package exposes author via dev-main while dev-master is missing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/laravel-research/SKILL.md at line 54, The `author` Packagist
rule currently only reads versions.dev-master.authors[0].name which misses
packages that publish under dev-main; update the rule row (the table cell
containing "`author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) →
`versions.dev-master.authors[0].name`") to use a fallback to dev-main (e.g.,
resolve to versions.dev-master.authors[0].name or, if null,
versions.dev-main.authors[0].name) so the author value is populated for packages
using dev-main.

9-46: ⚠️ Potential issue | 🟠 Major

Outer template fence is still structurally broken.

The ```markdown wrapper is interrupted by the nested ```bash fence, so the “exact template” block won’t render as intended.

Proposed fix
-```markdown
+````markdown
 ---
 org: VENDOR
@@
 ## Installation
 ```bash
 composer_require

@@

Resources

  • [[Laravel Packages]] (related)
    -```
    +````
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.github/skills/laravel-research/SKILL.md around lines 9 - 46, The template's
outer code fence (the opening "markdown") is broken by the nested "bash"
fence—replace the outer triple backticks with a four-backtick fence (i.e., open
with "markdown" and close with "") so the inner "bash" and the final closing "" are treated as literal content; ensure you update both the opening
fence ("markdown") and the final closing fence ("") in SKILL.md so the
whole exact-template block renders correctly.


</details>

</blockquote></details>
<details>
<summary>.github/agents/research-mcp.agent.md (1)</summary><blockquote>

`27-33`: _⚠️ Potential issue_ | _🟠 Major_

**Instruction/runtime mismatch: MCP-specific guidance without MCP config.**

Lines 27–33 still reference "GitHub MCP + DeepWiki" for repository access, but the frontmatter (lines 1-5) no longer declares `mcp-servers` configuration. This creates ambiguity about the actual execution path.

Either re-introduce explicit MCP server configuration in the frontmatter, or update the instruction text to reference the available tools (`read`, `search`, `browser`) without MCP-specific assumptions.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/agents/research-mcp.agent.md around lines 27 - 33, The section
referencing "GitHub MCP + DeepWiki" assumes an MCP server but the frontmatter no
longer declares an mcp-servers configuration; either restore an explicit
mcp-servers entry in the frontmatter or change the lines that mention "GitHub
MCP + DeepWiki" (the block listing repo, package, docs, etc.) to instead
instruct using the available tools (`read`, `search`, `browser`) and remove
MCP-specific wording so the instructions match the actual runtime configuration.
```

</details>

</blockquote></details>
<details>
<summary>.steering/README.md (1)</summary><blockquote>

`27-31`: _⚠️ Potential issue_ | _🟠 Major_

**Current branch state is still out of sync with documented mirror workflow.**

`Verify steering sync` is failing, so this remains a merge blocker until regenerated mirrors are committed.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/README.md around lines 27 - 31, The branch is out of sync with the
documented mirror workflow; run the mirror generation step that the Verify
steering sync CI uses (replicate edits from .steering/ into the three IDE roots
under agents/ and skills/ and the three template paths), regenerate the mirrors
so .steering/** and every mirrored file match the expected state, then commit
the updated .steering/** and all updated mirror files in a single change before
pushing so the Verify steering sync job passes.
```

</details>

</blockquote></details>
<details>
<summary>.github/agents/laravel-package.agent.md (1)</summary><blockquote>

`34-34`: _⚠️ Potential issue_ | _🟠 Major_

**`author` mapping still points to a non-existent Packagist top-level field.**

The path `authors[0].name` at package root is not where Packagist exposes author data; this will keep producing empty/incorrect values for `author`.
  

```web
For Packagist package JSON (e.g., https://packagist.org/packages/spatie/laravel-permission.json), where is author information stored: top-level `package.authors` or under each entry in `package.versions[*].authors`?
```

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/agents/laravel-package.agent.md at line 34, The `author` mapping
currently points to a non-existent top-level Packagist field; update the mapping
so it reads author data from each package version instead (e.g., change the path
for `author` to something like `package.versions[*].authors[0].name` or, if you
resolve the latest version key,
`package.versions[<latest-version>].authors[0].name`) so the `author` column
pulls the actual author name from the versions' authors array rather than
`authors[0].name` at package root.
```

</details>

</blockquote></details>
<details>
<summary>.steering/templates/laravel-package.md (1)</summary><blockquote>

`1-35`: _⚠️ Potential issue_ | _🟡 Minor_

**Resolve remaining frontmatter-to-mapping inconsistency.**

The frontmatter fields `packagist_url` (line 11) and `forks` (line 14) are not documented in the "Field-to-Source Mapping" table (lines 25-35). Agents using this template may skip these fields or be confused about their sources.

<details>
<summary>📋 Proposed fix to complete the mapping</summary>

```diff
 | `docs_url` | GitHub repo `homepage` field or README docs link |
 | `tags` | GitHub repo `topics` + relevant feature keywords |
+| `packagist_url` | `https://packagist.org/packages/<vendor>/<package>` |
+| `forks` | GitHub MCP → `forks_count` |
 
 **All fields must be attempted.** Only leave a field blank if the data genuinely does not exist after checking its source.
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/templates/laravel-package.md around lines 1 - 35, Add explicit
mappings for the missing frontmatter fields `packagist_url` and `forks` to the
"Field-to-Source Mapping" table: map `packagist_url` to the Packagist package
URL (packagist.org/packages/<vendor>/<package>) and map `forks` to the GitHub
MCP `forks_count`; update the table rows accordingly in the template so agents
know to source `packagist_url` from Packagist and `forks` from GitHub.
```

</details>

</blockquote></details>
<details>
<summary>.github/skills/tailwindcss-development/SKILL.md (1)</summary><blockquote>

`3-3`: _⚠️ Potential issue_ | _🟠 Major_

**Version support is still inconsistent (v3/v4 claim vs v4-only rules).**

Line 3 advertises Tailwind v3/v4 scope, but Lines 24–25 require v4-only behavior. Please either make the skill explicitly v4-only in the description or add version-gated v3 guidance.  
  

```web
In Tailwind CSS official docs, which major versions support `corePlugins`, and what is the recommended import/config pattern for v3 vs v4?
```


Also applies to: 24-25

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/skills/tailwindcss-development/SKILL.md at line 3, The description
in .github/skills/tailwindcss-development/SKILL.md is inconsistent about version
support (the "description" field claims v3/v4 but the rules at lines 24–25
require v4-only behavior); either make the skill explicitly "Tailwind v4-only"
in the description and remove v3 references from lines 24–25, or add a short
version-gated subsection that documents v3 vs v4 differences (including
corePlugins availability and recommended import/config patterns) and update the
rules at lines 24–25 to be explicit about which behavior applies to which
version.
```

</details>

</blockquote></details>
<details>
<summary>.steering/skills/fluxui-free-development/SKILL.md (1)</summary><blockquote>

`3-3`: _⚠️ Potential issue_ | _🟠 Major_

**Frontmatter description contradicts Free-edition scope.**

Line 3 advertises components like `date-pickers` and `kanban`, but Line 32 restricts the available components to the Free edition list (which excludes these). This can cause incorrect skill activation for Pro-only features.




<details>
<summary>Suggested frontmatter correction</summary>

```diff
-description: "Use this skill for Flux UI development in Livewire applications only. Trigger when working with <flux:*> components, building or customizing Livewire component UIs, creating forms, modals, tables, or other interactive elements. Covers: flux: components (buttons, inputs, modals, forms, tables, date-pickers, kanban, badges, tooltips, etc.), component composition, Tailwind CSS styling, Heroicons/Lucide icon integration, validation patterns, responsive design, and theming. Do not use for non-Livewire frameworks or non-component styling."
+description: "Use this skill for Flux UI Free development in Livewire applications only. Trigger when working with free <flux:*> components, building or customizing Livewire component UIs, creating forms, modals, and other interactive elements available in the free edition. Covers: free Flux components (buttons, inputs, modals, forms, tables, badges, tooltips, etc.), component composition, Tailwind CSS styling, Heroicons/Lucide icon integration, validation patterns, responsive design, and theming. Do not use for Pro-only Flux components, non-Livewire frameworks, or non-component styling."
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/skills/fluxui-free-development/SKILL.md at line 3, The frontmatter
"description" string in SKILL.md currently lists Pro-only components (e.g.,
"date-pickers", "kanban") that contradict the Free-edition constraints later in
the file; update the description to only mention components and features
available in the Free edition or explicitly note Pro-only items as excluded to
avoid incorrect skill activation—edit the "description" value in SKILL.md (the
frontmatter description field) to align with the Free edition component list or
add an explicit clause like "Free edition: excludes date-pickers, kanban, etc."
so the skill trigger rules remain consistent.
```

</details>

</blockquote></details>
<details>
<summary>.claude/skills/fluxui-free-development/SKILL.md (1)</summary><blockquote>

`3-3`: _⚠️ Potential issue_ | _🟠 Major_

**Frontmatter description contradicts Free-edition scope.**

Line 3 advertises components like `date-pickers` and `kanban`, but Line 32 restricts the available components to the Free edition list (which excludes these). This can cause incorrect skill activation for Pro-only features.




<details>
<summary>Suggested frontmatter correction</summary>

```diff
-description: "Use this skill for Flux UI development in Livewire applications only. Trigger when working with <flux:*> components, building or customizing Livewire component UIs, creating forms, modals, tables, or other interactive elements. Covers: flux: components (buttons, inputs, modals, forms, tables, date-pickers, kanban, badges, tooltips, etc.), component composition, Tailwind CSS styling, Heroicons/Lucide icon integration, validation patterns, responsive design, and theming. Do not use for non-Livewire frameworks or non-component styling."
+description: "Use this skill for Flux UI Free development in Livewire applications only. Trigger when working with free <flux:*> components, building or customizing Livewire component UIs, creating forms, modals, and other interactive elements available in the free edition. Covers: free Flux components (buttons, inputs, modals, forms, tables, badges, tooltips, etc.), component composition, Tailwind CSS styling, Heroicons/Lucide icon integration, validation patterns, responsive design, and theming. Do not use for Pro-only Flux components, non-Livewire frameworks, or non-component styling."
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/fluxui-free-development/SKILL.md at line 3, The frontmatter
"description" field currently advertises Pro-only components (e.g.,
"date-pickers", "kanban") that contradict the Free-edition component list;
update the "description" value to only list components available in the Free
edition or explicitly note that Pro-only components are excluded, removing or
qualifying mentions of date-pickers and kanban so the skill activation matches
the Free-edition scope and the Free edition list referenced elsewhere in the
SKILL.md.
```

</details>

</blockquote></details>
<details>
<summary>.steering/skills/sync-agents/SKILL.md (1)</summary><blockquote>

`20-20`: _⚠️ Potential issue_ | _🟠 Major_

**Literal Obsidian embed examples can still trigger expansion in sync/CI.**

This line still includes raw `![[...]]` patterns in the document body, which can be interpreted by your build/verification flow instead of remaining instructional text.

 

<details>
<summary>💡 Proposed safe wording update</summary>

```diff
-1. **Build** — In each agent file’s **body** (after opening YAML), expand **`![[path]]`** embed links for **`templates/`** paths by default. For **`research-skill.agent.md`**, also expand **`![[github-copilot/...]]`** embeds only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other `![[...]]` as-is.
+1. **Build** — In each agent file’s **body** (after opening YAML), expand wiki embeds (Obsidian embed syntax) for `templates/` paths by default. For **`research-skill.agent.md`**, also expand `github-copilot/` embeds only in the **`.cursor/agents/`** output; **`.github`** / **`.claude`** replace those embeds with a pointer to **`.steering/github-copilot/Skills.md`**. With `#Heading`, inline the `## Heading` section only. Leave other embeds as-is.
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/skills/sync-agents/SKILL.md at line 20, The literal Obsidian embed
examples in the document body (e.g. ![[path]], ![[github-copilot/...]],
![[...]]) can be picked up by the sync/CI expansion; make them inert by escaping
or quoting the patterns (use inline code or a fenced code block or HTML
entities) so they remain instructional text, and update the wording that
references templates/, research-skill.agent.md, .cursor/agents/, .github,
.claude, .steering/github-copilot/Skills.md, `#Heading` and ## Heading to use
those escaped forms so the build will not expand embeds while preserving the
intended guidance about expansion rules.
```

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🟡 Minor comments (14)</summary><blockquote>

<details>
<summary>.github/skills/skill-research/skill-template.md-63-65 (1)</summary><blockquote>

`63-65`: _⚠️ Potential issue_ | _🟡 Minor_

**Add language identifier to the fenced code block.**

The validation command code block should specify `bash` or `shell` as the language identifier.

<details>
<summary>📝 Proposed fix</summary>

```diff
 # Validation
 Use [skills-ref](https://github.com/agentskills/agentskills/tree/main/skills-ref):
-```
+```bash
 skills-ref validate ./my-skill
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.github/skills/skill-research/skill-template.md around lines 63 - 65, Update
the fenced code block containing the command "skills-ref validate ./my-skill" to
include a language identifier (e.g., bash or shell) so the block becomes ```bash
(or ```shell) followed by the command; this change should be applied to the
fenced block that currently reads ``` skills-ref validate ./my-skill to ensure
proper syntax highlighting.
````

</details>

</blockquote></details>
<details>
<summary>.github/skills/skill-research/skill-template.md-25-32 (1)</summary><blockquote>

`25-32`: _⚠️ Potential issue_ | _🟡 Minor_

**Add language identifier to the fenced code block.**

The directory structure code block should specify a language identifier for proper syntax highlighting and rendering.

<details>
<summary>📝 Proposed fix</summary>

```diff
 # Directory Structure
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.github/skills/skill-research/skill-template.md around lines 25 - 32, Update
the fenced directory-structure code block in SKILL.md to include a language
identifier (e.g., add "text" after the opening ```), so the block beginning with
``` is changed to ```text to enable proper syntax highlighting; modify the block
in .github/skills/skill-research/skill-template.md where the directory listing
sample appears.
````

</details>

</blockquote></details>
<details>
<summary>.github/skills/agentic-programming/SKILL.md-30-32 (1)</summary><blockquote>

`30-32`: _⚠️ Potential issue_ | _🟡 Minor_

**Add fence languages to command examples.**

Both command blocks are missing a language identifier and trigger MD040.



<details>
<summary>Proposed fix</summary>

```diff
-```
+```bash
 /laravel-package <vendor/package>
 ```
@@
-```
+```bash
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>


Also applies to: 36-38

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.github/skills/agentic-programming/SKILL.md around lines 30 - 32, Two fenced
code blocks showing the commands "/laravel-package <vendor/package>" and
"/laravel-package spatie/laravel-markdown-response" lack a language tag and
trigger MD040; update each opening fence to include "bash" (i.e., change ``` to
```bash for both command examples) so the blocks are explicitly marked as bash
commands.
````

</details>

</blockquote></details>
<details>
<summary>.cursor/skills/skill-template/SKILL.md-25-32 (1)</summary><blockquote>

`25-32`: _⚠️ Potential issue_ | _🟡 Minor_

**Specify languages for fenced code blocks.**

These fences are unlabeled and trigger MD040.



<details>
<summary>Proposed fix</summary>

```diff
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
 ├── scripts/          # Optional: Executable code (e.g., extract.py)
 ├── references/       # Optional: Docs (e.g., REFERENCE.md)
 ├── assets/           # Optional: Templates, images, data
 └── ...               # Additional files
 ```
@@
-```
+```bash
 skills-ref validate ./my-skill
 ```
```
</details>


Also applies to: 63-65

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/skill-template/SKILL.md around lines 25 - 32, The fenced code
blocks in SKILL.md are unlabeled, causing MD040; update the three unlabeled
blocks in SKILL.md (the directory tree block and the example command block(s)
around the "skills-ref validate ./my-skill" usage) to include explicit language
labels—use "text" for the directory tree block and "bash" (or "sh") for the
command examples—so the tree and the command output are properly annotated; edit
the SKILL.md file replacing the unlabeled ``` fences around the directory
listing and the command example with ```text and ```bash respectively.
````

</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/Memories.md-61-61 (1)</summary><blockquote>

`61-61`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix GitHub capitalization in wikilink.**

The official product name is "GitHub Copilot" with a capital "H". The Obsidian wikilink should match.


<details>
<summary>📝 Proposed fix</summary>

```diff
-[[Github Copilot]]
+[[GitHub Copilot]]
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Memories.md at line 61, Fix the wikilink
capitalization for the GitHub product name by updating the Obsidian link text
from [[Github Copilot]] to [[GitHub Copilot]] in the Memories.md content so the
link matches the official "GitHub Copilot" casing.
```

</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/Skills.md-80-81 (1)</summary><blockquote>

`80-81`: _⚠️ Potential issue_ | _🟡 Minor_

**Normalize internal wikilink casing to avoid broken note resolution.**

Line 81 uses `[[GitHub Copilot/...]]` while earlier references use `[[github-copilot/...]]`. Keep one canonical path style to prevent dead links in mirrors/Obsidian notes.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Skills.md around lines 80 - 81, Normalize the
wikilink casing so all internal links use the same canonical path style: replace
the capitalized links `[[GitHub Copilot/Agents]]` and `[[GitHub
Copilot/Memories]]` with the lowercase forms used elsewhere (e.g.
`[[github-copilot/Agents]]` or `[[github-copilot/memories]]` depending on the
established convention) so they match existing references and avoid broken
resolution; ensure `[[Laravel Packages]]` remains unchanged if it already
follows the chosen canonical casing.
```

</details>

</blockquote></details>
<details>
<summary>.claude/skills/agentic-programming/SKILL.md-30-32 (1)</summary><blockquote>

`30-32`: _⚠️ Potential issue_ | _🟡 Minor_

**Add languages to fenced code blocks.**

Line 30 and Line 36 use unlabeled code fences, which will keep triggering `MD040`.

<details>
<summary>Suggested fix</summary>

```diff
-```
+```text
 /laravel-package <vendor/package>
 ```

-```
+```text
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>



Also applies to: 36-38

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/agentic-programming/SKILL.md around lines 30 - 32, Add a
language label to the unlabeled fenced code blocks that contain the lines
"/laravel-package <vendor/package>" and "/laravel-package
spatie/laravel-markdown-response" so they no longer trigger MD040; update those
triple-backtick fences to include a language token (e.g., "text") immediately
after the opening ``` for both occurrences (the block showing "/laravel-package
<vendor/package>" and the example block "/laravel-package
spatie/laravel-markdown-response").
````

</details>

</blockquote></details>
<details>
<summary>.steering/laravel-packages/pestphp__pest.md-25-25 (1)</summary><blockquote>

`25-25`: _⚠️ Potential issue_ | _🟡 Minor_

**Link target does not match the “Writing tests” label.**

Line 25 labels the link as “Writing tests” but points to `/docs/installation`, which is confusing for readers. Point it to the writing-tests page (or relabel it as installation).

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/laravel-packages/pestphp__pest.md at line 25, The link label
"Writing tests" in the line containing "**Readable API:** `expect()`, datasets,
hooks, and plugins—see [Writing tests](https://pestphp.com/docs/installation)"
points to the installation page; update the href to the correct writing-tests
page (e.g., https://pestphp.com/docs/writing-tests) or change the link text to
"Installation" so label and target match, keeping the surrounding sentence and
markdown formatting intact.
```

</details>

</blockquote></details>
<details>
<summary>.steering/github-copilot/SDK.md-29-37 (1)</summary><blockquote>

`29-37`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix markdownlint violations (table spacing + fenced language).**

The deployment table is missing required blank-line padding, and the directory-structure fence has no language identifier.  

<details>
<summary>Proposed patch</summary>

```diff
 ## Key Features (from SKILL.md commits)
 - **Architecture**: Transport modes (stdio/TCP).
@@
-- **Deployment Patterns**:
-  | Pattern | Description |
-  |---------|-------------|
-  | Local CLI | `copilot-sdk run` |
-  | External Server | TCP/HTTP endpoints |
-  | Bundled CLI | Embed in apps |
-  | Docker Compose | Multi-container |
-  | Session Isolation | Prod checklist |
+- **Deployment Patterns**:
+
+  | Pattern | Description |
+  |---------|-------------|
+  | Local CLI | `copilot-sdk run` |
+  | External Server | TCP/HTTP endpoints |
+  | Bundled CLI | Embed in apps |
+  | Docker Compose | Multi-container |
+  | Session Isolation | Prod checklist |
@@
-```
+```text
 .github/skills/copilot-sdk/
 ├── SKILL.md          # Main instructions (~900 lines)
 └── references/       # Supporting docs/examples
     └── (various files for tests/acceptance criteria)
 ```
```
</details>


Also applies to: 42-47

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/SDK.md around lines 29 - 37, The Markdown has lint
issues: add required blank lines before and after the Deployment Patterns table
(the table block starting with "| Pattern | Description |" and ending with
"Deny-by-default model.") so it is properly padded, and change the
directory-structure fenced code block to include a language identifier (use
```text) instead of plain ```; apply the same blank-line/table padding and
fence-language fixes to the other occurrence referenced (lines 42-47).
````

</details>

</blockquote></details>
<details>
<summary>.steering/agents/laravel-package.agent.md-23-29 (1)</summary><blockquote>

`23-29`: _⚠️ Potential issue_ | _🟡 Minor_

**Instruction mismatch: “inlined mapping” is not actually inlined.**

Line 23 says the **Field-to-Source Mapping** is inlined below, but Line 29 is an Obsidian embed pointer. Please either inline the mapping content here or update wording to explicitly require embed expansion before use.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/laravel-package.agent.md around lines 23 - 29, The
"Field-to-Source Mapping" referenced in the steps is not actually inlined — the
agent sees an Obsidian embed pointer
(![[templates/laravel-package#Field-to-Source Mapping]]) instead; fix by either
inlining the full mapping content directly under the "## Field-to-Source
Mapping" heading in the agent prompt or update the instruction text in the agent
spec (the step that currently reads "Generate the note from
`.steering/templates/laravel-package.md` (YAML + body, excluding the
Field-to-Source Mapping section — that section is agent reference only). Use the
**Field-to-Source Mapping** section inlined below") to explicitly require
resolving/expanding the embed before use; ensure the file/section name
"Field-to-Source Mapping" and the embed token
"![[templates/laravel-package#Field-to-Source Mapping]]" are updated so the
agent can locate either the inlined content or the expansion step.
```

</details>

</blockquote></details>
<details>
<summary>.steering/cursor/Plugins.md-95-95 (1)</summary><blockquote>

`95-95`: _⚠️ Potential issue_ | _🟡 Minor_

**Clarify the referenced sync-skills path to avoid ambiguity.**

`agents/sync-skills.md` is not repo-absolute like the rest of this table and can be misread. Use the fully qualified path (for example, `.steering/agents/sync-skills.md`) consistently.

<details>
<summary>Suggested doc tweak</summary>

```diff
-| `.steering/skills/sync-skills/SKILL.md` (or `agents/sync-skills.md`) | How **steering** replicates skills/agents into IDE paths (parallel concern to “install a plugin”). |
+| `.steering/skills/sync-skills/SKILL.md` (or `.steering/agents/sync-skills.md`) | How **steering** replicates skills/agents into IDE paths (parallel concern to “install a plugin”). |
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/cursor/Plugins.md at line 95, Update the table entry so the
referenced path is repository-absolute and unambiguous: replace the ambiguous
"agents/sync-skills.md" with the fully qualified path
".steering/agents/sync-skills.md" (and ensure any sibling reference
`.steering/skills/sync-skills/SKILL.md` follows the same fully-qualified pattern
if intended); edit the table cell text containing
`.steering/skills/sync-skills/SKILL.md (or agents/sync-skills.md)` to use
consistent, fully-qualified paths like `.steering/skills/sync-skills/SKILL.md`
and `.steering/agents/sync-skills.md` so readers cannot misinterpret the
location.
```

</details>

</blockquote></details>
<details>
<summary>.steering/agents/sync-agents.md-23-23 (1)</summary><blockquote>

`23-23`: _⚠️ Potential issue_ | _🟡 Minor_

**Resolve markdownlint MD038 in heading delimiter examples.**

The code spans `` `## ` `` and `` `# ` `` include trailing spaces, which triggers MD038. Rephrase without spaces in code spans.

<details>
<summary>Suggested lint-safe wording</summary>

```diff
-   - With `#Heading`, include only the `## Heading` section: from that heading until the next `## `, an `---` line on its own, or an `# ` H1.
+   - With `#Heading`, include only the `## Heading` section: from that heading until the next H2 heading (`##`), an `---` line on its own, or an H1 heading (`#`).
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/sync-agents.md at line 23, The MD038 failure is caused by
trailing spaces inside the inline code spans shown in the example (the spans
currently written as `## ` and `# `); update those spans to remove the trailing
space (write them as `##` and `#`) so the examples still convey the heading
delimiters (e.g., where you describe "#Heading" and "## Heading") but use
lint-safe inline code tokens without trailing spaces.
```

</details>

</blockquote></details>
<details>
<summary>.steering/cursor/Skills.md-30-37 (1)</summary><blockquote>

`30-37`: _⚠️ Potential issue_ | _🟡 Minor_

**Add blank lines after table blocks to satisfy markdownlint (MD058).**

Two table sections are followed immediately by prose. Insert one empty line after each table.

<details>
<summary>Proposed fix</summary>

```diff
 | **`.agents/skills/`** | Project (alternate layout in docs) |
 | **`~/.cursor/skills/`** | User (global) |
+
 **Compatibility paths** (also scanned): **`.claude/skills/`**, **`.codex/skills/`**, and the matching **`~/.claude/`** / **`~/.codex/`** trees.
```

```diff
 | `metadata` | No | Arbitrary key-value map. |
 | `disable-model-invocation` | No | If **`true`**, only applies when the user runs **`/skill-name`** (no automatic inclusion). |
+
 **Repo spec:** This project’s **`allowed-tools`** and stricter field notes live in **`.steering/templates/skill.md`** (mirrored into **`.cursor/skills/skill-template/SKILL.md`** for authoring).
```
</details>


Also applies to: 68-77

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/cursor/Skills.md around lines 30 - 37, Add a single blank line
after each Markdown table to satisfy markdownlint rule MD058: insert one empty
line immediately after the table that begins with "| Location | Scope |" (the
project/user skills table) and likewise after the other table referenced around
lines 68-77 so that the subsequent prose is separated from the table.
```

</details>

</blockquote></details>
<details>
<summary>README.md-112-131 (1)</summary><blockquote>

`112-131`: _⚠️ Potential issue_ | _🟡 Minor_

**Add languages to fenced code blocks to satisfy markdown linting.**

The fences starting on Line 112, Line 143, and Line 149 are unlabeled (`MD040`).  

<details>
<summary>Suggested doc-lint patch</summary>

```diff
-```
+```text
 .steering/
 ...
-```
+```

-```
+```text
 /research-skill https://example.com/org/repo/tree/main/path/to/skill
-```
+```

-```
+```text
 .steering/skills/<namespace>__<skill-name>.md
-```
+```
```
</details>


Also applies to: 143-151

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 112 - 131, Several fenced code blocks in README.md
(the directory-tree block and the example inline code blocks shown in the diff)
are unlabeled and trigger MD040; update each triple-backtick fence to include a
language tag (e.g., use "text") so the blocks become ```text ... ```; look for
the directory tree block and the three example code fences shown in the diff and
add the language label to the opening backticks for each (these are the
unlabeled fences in the README.md snippet).
````

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (5)</summary><blockquote>

<details>
<summary>.claude/skills/phpunit-laravel/SKILL.md (1)</summary><blockquote>

`1-26`: **LGTM!**

The PHPUnit skill documentation is clear and comprehensive. The workflow (create with `--phpunit`, run targeted tests, verify full suite) is sensible, and the prohibition on removing test files without approval is an important safeguard.

**Optional style refinement:** Lines 22-24 begin three consecutive bullets with "To run..." / "To filter...". Consider varying the sentence structure for smoother reading (e.g., "Run all tests: ...", "Run a specific file: ...", "Filter by test name: ..."), but this is purely stylistic.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/phpunit-laravel/SKILL.md around lines 1 - 26, In the "Running
Tests" section, change the three consecutive bullets that start with "To run..."
/ "To filter..." so they vary in phrasing; replace them with concise leading
phrases such as "Run all tests: `php artisan test --compact`", "Run a specific
file: `php artisan test --compact tests/Feature/ExampleTest.php`", and "Filter
by test name: `php artisan test --compact --filter=testName`" to improve
readability while keeping the commands and the existing command-prefix note
unchanged.
```

</details>

</blockquote></details>
<details>
<summary>.cursor/skills/agentic-programming/SKILL.md (1)</summary><blockquote>

`30-38`: **Add language identifiers to fenced code blocks.**

The code blocks at lines 30-32 and 36-38 should specify `bash` as the language identifier to improve syntax highlighting and meet Markdown best practices.

<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```bash
 /laravel-package <vendor/package>
 ```

 Example:

-```
+```bash
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/agentic-programming/SKILL.md around lines 30 - 38, Add the
language identifier "bash" to the two fenced code blocks containing the CLI
snippet "/laravel-package <vendor/package>" and its example "/laravel-package
spatie/laravel-markdown-response" so they become triple-backtick blocks starting
with ```bash; update both occurrences in SKILL.md to ensure proper syntax
highlighting and consistency with Markdown best practices.
````

</details>

</blockquote></details>
<details>
<summary>.steering/templates/laravel-package.md (1)</summary><blockquote>

`102-104`: **Specify language identifier for the code block.**

The fenced code block at line 102 should declare its language (e.g., `http` for REST endpoint examples) to improve rendering and meet Markdown best practices.

<details>
<summary>📝 Proposed fix</summary>

```diff
 **API** (if applicable):
-```
+```http
 POST /api/v1/package/upload/example-importer
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

````
Verify each finding against the current code and only fix it if needed.

In @.steering/templates/laravel-package.md around lines 102 - 104, The fenced
code block containing the REST example "POST
/api/v1/package/upload/example-importer" should declare its language to improve
rendering; update that fence to start with ```http (i.e., change the opening
backticks before the line "POST /api/v1/package/upload/example-importer" to
```http) so the snippet is rendered as an HTTP request example.
````

</details>

</blockquote></details>
<details>
<summary>scripts/sync-boost-ai-skills.py (2)</summary><blockquote>

`402-406`: **Consider using `json.dumps` for manifest generation.**

The manifest JSON is manually formatted with string interpolation. While this works for the current simple structure, using `json.dumps` would be safer if the manifest grows or if commit SHAs ever contain special characters (unlikely but defensive).



<details>
<summary>Suggested improvement</summary>

```diff
+import json
+
 # ... in main() ...
         manifest = STEERING_SKILLS / ".boost-ai-sync.json"
-        manifest.write_text(
-            '{\n  "repo": "laravel/boost",\n  "commit": "%s"\n}\n' % commit,
-            encoding="utf-8",
-        )
+        manifest.write_text(
+            json.dumps({"repo": "laravel/boost", "commit": commit}, indent=2) + "\n",
+            encoding="utf-8",
+        )
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@scripts/sync-boost-ai-skills.py` around lines 402 - 406, Replace the manual
string interpolation when writing the manifest with a json-encoded payload:
build a dict with the repo and commit values (use the existing commit variable),
call json.dumps(...) to produce the content, and pass that string to
manifest.write_text(..., encoding="utf-8") instead of the current formatted
literal; update imports to include the json module if not present and keep the
same manifest, STEERING_SKILLS, and write_text usage.
```

</details>

---

`241-265`: **Consider documenting why the source file content is discarded.**

The `write_pint_core` function reads the source file (line 242) but only to verify it exists—the actual SKILL.md content is hand-authored. While the banner mentions "(Blade branches merged)", a brief inline comment explaining why the upstream content isn't used would help future maintainers understand this is intentional.



<details>
<summary>Suggested clarification</summary>

```diff
 def write_pint_core(boost_root: Path, dest_dir: Path, rel_source: str, commit: str) -> None:
-    _ = (boost_root / rel_source).read_text(encoding="utf-8")  # ensure path exists
+    # Read only to verify path exists; Boost's pint/core.blade.php has conditional
+    # Blade branches that don't translate cleanly, so we emit hand-authored guidance.
+    _ = (boost_root / rel_source).read_text(encoding="utf-8")
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@scripts/sync-boost-ai-skills.py` around lines 241 - 265, The function
write_pint_core currently reads the source file via (boost_root /
rel_source).read_text(...) only to assert the path exists but then discards the
content; add a concise inline comment next to that read (or replace the read
with an existence check) explaining that upstream SKILL.md content is
intentionally not used because the SKILL is hand-authored here (and the banner
notes Blade branches merged), and reference rel_source and commit so future
maintainers understand this is deliberate and not a bug.
```

</details>

</blockquote></details>

</blockquote></details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `93f13706-a992-4824-8c42-fe9a7fe26dba`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 5e51623985cc91600cfa4f7fc3d1186678412b9f and 08824cf6f0cd0e9d113526c98b0ba4c4b086b45a.

</details>

<details>
<summary>⛔ Files ignored due to path filters (2)</summary>

* `scripts/__pycache__/regenerate-ide-mirrors.cpython-312.pyc` is excluded by `!**/*.pyc`
* `scripts/__pycache__/sync-boost-ai-skills.cpython-312.pyc` is excluded by `!**/*.pyc`

</details>

<details>
<summary>📒 Files selected for processing (123)</summary>

* `.claude/agents/idea.agent.md`
* `.claude/agents/laravel-package.agent.md`
* `.claude/agents/research-mcp.agent.md`
* `.claude/agents/research-skill.agent.md`
* `.claude/agents/sync-agents.md`
* `.claude/agents/sync-skills.md`
* `.claude/skills/agentic-programming/SKILL.md`
* `.claude/skills/fluxui-free-development/SKILL.md`
* `.claude/skills/fluxui-pro-development/SKILL.md`
* `.claude/skills/laravel-pint/SKILL.md`
* `.claude/skills/laravel-research/SKILL.md`
* `.claude/skills/laravel-sail/SKILL.md`
* `.claude/skills/livewire-development/SKILL.md`
* `.claude/skills/pest-testing/SKILL.md`
* `.claude/skills/phpunit-laravel/SKILL.md`
* `.claude/skills/skill-research/SKILL.md`
* `.claude/skills/skill-template/SKILL.md`
* `.claude/skills/sync-agents/SKILL.md`
* `.claude/skills/sync-skills/SKILL.md`
* `.claude/skills/tailwindcss-development/SKILL.md`
* `.cursor/agents/idea.agent.md`
* `.cursor/agents/laravel-package.agent.md`
* `.cursor/agents/research-mcp.agent.md`
* `.cursor/agents/research-skill.agent.md`
* `.cursor/agents/sync-agents.md`
* `.cursor/agents/sync-skills.md`
* `.cursor/skills/agentic-programming/SKILL.md`
* `.cursor/skills/fluxui-free-development/SKILL.md`
* `.cursor/skills/fluxui-pro-development/SKILL.md`
* `.cursor/skills/laravel-pint/SKILL.md`
* `.cursor/skills/laravel-research/SKILL.md`
* `.cursor/skills/laravel-sail/SKILL.md`
* `.cursor/skills/livewire-development/SKILL.md`
* `.cursor/skills/pest-testing/SKILL.md`
* `.cursor/skills/phpunit-laravel/SKILL.md`
* `.cursor/skills/skill-research/SKILL.md`
* `.cursor/skills/skill-template/SKILL.md`
* `.cursor/skills/sync-agents/SKILL.md`
* `.cursor/skills/sync-skills/SKILL.md`
* `.cursor/skills/tailwindcss-development/SKILL.md`
* `.github/agents/idea.agent.md`
* `.github/agents/laravel-package.agent.md`
* `.github/agents/research-mcp.agent.md`
* `.github/agents/research-skill.agent.md`
* `.github/agents/skill-research.agent.md`
* `.github/agents/sync-agents.md`
* `.github/agents/sync-skills.md`
* `.github/skills/agentic-programming/SKILL.md`
* `.github/skills/fluxui-free-development/SKILL.md`
* `.github/skills/fluxui-pro-development/SKILL.md`
* `.github/skills/laravel-pint/SKILL.md`
* `.github/skills/laravel-research/SKILL.md`
* `.github/skills/laravel-research/laravel-package-template.md`
* `.github/skills/laravel-sail/SKILL.md`
* `.github/skills/livewire-development/SKILL.md`
* `.github/skills/pest-testing/SKILL.md`
* `.github/skills/phpunit-laravel/SKILL.md`
* `.github/skills/skill-research/SKILL.md`
* `.github/skills/skill-research/skill-template.md`
* `.github/skills/sync-agents/SKILL.md`
* `.github/skills/sync-skills/SKILL.md`
* `.github/skills/tailwindcss-development/SKILL.md`
* `.github/workflows/sync-skill-template.yml`
* `.github/workflows/verify-steering-sync.yml`
* `.steering/README.md`
* `.steering/agents/idea.agent.md`
* `.steering/agents/laravel-package.agent.md`
* `.steering/agents/research-mcp.agent.md`
* `.steering/agents/research-skill.agent.md`
* `.steering/agents/sync-agents.md`
* `.steering/agents/sync-skills.md`
* `.steering/cursor/Agents.md`
* `.steering/cursor/Hooks.md`
* `.steering/cursor/Plugins.md`
* `.steering/cursor/Rules.md`
* `.steering/cursor/Skills.md`
* `.steering/github-copilot/Agent MCP.md`
* `.steering/github-copilot/Agentic Workflows.md`
* `.steering/github-copilot/Agents.md`
* `.steering/github-copilot/Environment.md`
* `.steering/github-copilot/Memories.md`
* `.steering/github-copilot/Plugins.md`
* `.steering/github-copilot/Prompts.md`
* `.steering/github-copilot/SDK.md`
* `.steering/github-copilot/Settings.md`
* `.steering/github-copilot/Skills.md`
* `.steering/github-copilot/plugins/Deep Wiki.md`
* `.steering/ideas/README.md`
* `.steering/laravel-packages/README.md`
* `.steering/laravel-packages/larastan__larastan.md`
* `.steering/laravel-packages/laravel__pint.md`
* `.steering/laravel-packages/livewire__flux.md`
* `.steering/laravel-packages/pestphp__pest.md`
* `.steering/mcp.json`
* `.steering/mcps/deepwiki__mcp.md`
* `.steering/mcps/github__github-mcp-server.md`
* `.steering/mcps/upstash__context7.md`
* `.steering/skills/.boost-ai-sync.json`
* `.steering/skills/README.md`
* `.steering/skills/SOURCES.md`
* `.steering/skills/fluxui-free-development/SKILL.md`
* `.steering/skills/fluxui-pro-development/SKILL.md`
* `.steering/skills/laravel-pint/SKILL.md`
* `.steering/skills/laravel-research/SKILL.md`
* `.steering/skills/laravel-sail/SKILL.md`
* `.steering/skills/livewire-development/SKILL.md`
* `.steering/skills/pest-testing/SKILL.md`
* `.steering/skills/phpunit-laravel/SKILL.md`
* `.steering/skills/skill-research/SKILL.md`
* `.steering/skills/sync-agents/SKILL.md`
* `.steering/skills/sync-agents/tdd.md`
* `.steering/skills/sync-skills/SKILL.md`
* `.steering/skills/tailwindcss-development/SKILL.md`
* `.steering/templates/AGENTS.md`
* `.steering/templates/agent.md`
* `.steering/templates/idea.md`
* `.steering/templates/laravel-package.md`
* `.steering/templates/skill.md`
* `README.md`
* `mcps/README.md`
* `scripts/regenerate-ide-mirrors.py`
* `scripts/sync-boost-ai-skills.py`
* `templates/agents.md`

</details>

<details>
<summary>💤 Files with no reviewable changes (7)</summary>

* .steering/laravel-packages/README.md
* .github/workflows/sync-skill-template.yml
* .github/skills/laravel-research/laravel-package-template.md
* .steering/templates/skill.md
* mcps/README.md
* templates/agents.md
* .github/agents/skill-research.agent.md

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@copilot address and resolve all of coderabbit's feedback on this PR.

Copilot AI and others added 2 commits April 9, 2026 23:56
- scripts/regenerate-ide-mirrors.py:
  - Fix strip_copilot_frontmatter to skip entire multiline tools: block
    (not just the key line), matching behavior of mcp-servers: handling
  - Add path traversal guard in resolve_one_embed: reject absolute paths,
    paths with .. segments, and paths that resolve outside .steering/
  - Prune stale agent mirrors after regeneration (delete .md files in
    .github/.cursor/.claude/agents/ that no longer have a steering source)
  - Prune stale skill mirrors after regeneration (skip special dirs:
    skill-research, skill-template, agentic-programming)

- .github/workflows/verify-steering-sync.yml:
  - Use git status --porcelain --untracked-files=all instead of
    git diff --exit-code to catch newly generated untracked mirror files

- .steering/skills/laravel-research/SKILL.md:
  - Fix nested backtick fence: use quadruple backticks for outer template
    block so inner ```bash fences are not broken
  - Fix Packagist author resolution: use package.maintainers[0].name or
    package.authors[0].name instead of fragile dev-master key

- .steering/templates/laravel-package.md:
  - Fix Packagist author resolution to not rely on dev-master key

- .steering/skills/fluxui-free-development/SKILL.md:
  - Fix description: remove Pro-only components (date-pickers, kanban)
    from Free edition description; scope to free components only

- .steering/laravel-packages/livewire__flux.md:
  - Change Flux Pro default from assume-Pro to assume OSS-only unless
    the target repo explicitly confirms Pro licensing

- .steering/mcp.json:
  - Use ${PERPLEXITY_API_KEY} env var reference instead of empty string
  - Use ${GITHUB_PAT} env var reference instead of literal placeholder

- .steering/agents/research-skill.agent.md:
  - Add slug normalization guidance for namespace/skill-name

- .steering/agents/research-mcp.agent.md:
  - Add slug normalization guidance for owner/name output path segments

- .steering/skills/skill-research/SKILL.md:
  - Add slug normalization guidance for namespace/skill-name

Regenerate IDE mirrors for all changed sources.

Agent-Logs-Url: https://github.com/ChrisThompsonTLDR/agentic-programming/sessions/134b2103-769c-4946-afae-5892e200e232

Co-authored-by: ChrisThompsonTLDR <348801+ChrisThompsonTLDR@users.noreply.github.com>
…n regenerate-ide-mirrors.py

Agent-Logs-Url: https://github.com/ChrisThompsonTLDR/agentic-programming/sessions/134b2103-769c-4946-afae-5892e200e232

Co-authored-by: ChrisThompsonTLDR <348801+ChrisThompsonTLDR@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 9, 2026

@copilot address and resolve all of coderabbit's feedback on this PR.

Addressed in commits 0ace0d7 and dec0adb. Here's what was changed for each CodeRabbit issue:

Script fixes (scripts/regenerate-ide-mirrors.py):

  • Fixed multiline tools: block stripping — now skips the full indented block, matching mcp-servers: behavior
  • Added path traversal guard in resolve_one_embed — rejects .. segments and absolute paths, and verifies the resolved path stays inside .steering/
  • Added pruning of stale agent mirrors after regeneration
  • Added pruning of stale skill mirrors after regeneration (preserves skill-research, skill-template, and agentic-programming special dirs via SPECIAL_SKILL_DIRS constant)

CI fix (.github/workflows/verify-steering-sync.yml):

  • Switched from git diff --exit-code to git status --porcelain --untracked-files=all to catch untracked mirror files

Content fixes:

  • .steering/skills/laravel-research/SKILL.md — fixed broken nested triple-backtick fence (4 backticks); fixed Packagist author resolution to use package.maintainers[0].name instead of the fragile dev-master key
  • .steering/templates/laravel-package.md — same Packagist author fix
  • .steering/skills/fluxui-free-development/SKILL.md — removed Pro-only components from Free edition description
  • .steering/laravel-packages/livewire__flux.md — changed Flux Pro default to assume OSS-only
  • .steering/mcp.json — replaced hardcoded values with ${PERPLEXITY_API_KEY} and ${GITHUB_PAT} env var references
  • research-skill.agent.md, research-mcp.agent.md, skill-research/SKILL.md — added slug normalization guidance for output path derivation

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@BugBot run

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit dec0adb. Configure here.

@ChrisThompsonTLDR
Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 2026

✅ Actions performed

Full review triggered.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 12

♻️ Duplicate comments (5)
.github/agents/research-mcp.agent.md (1)

28-34: ⚠️ Potential issue | 🟠 Major

Align runtime instructions with declared capabilities.

Line 28 still requires “GitHub MCP + DeepWiki,” but this file only declares generic tools in frontmatter. Please either reintroduce explicit MCP configuration or reword to tool-agnostic research steps so execution is deterministic.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/agents/research-mcp.agent.md around lines 28 - 34, Update the
runtime instructions so they match the declared frontmatter tools: either
reintroduce explicit MCP tool configuration (add the "GitHub MCP" and "DeepWiki"
tool entries to the frontmatter and ensure the bullet "GitHub repo (via GitHub
MCP + DeepWiki)" uses those tools), or make the bullets tool-agnostic by
removing mentions of "GitHub MCP + DeepWiki" and changing that bullet to a
generic instruction like "GitHub repo (via repository search/inspection)" so the
steps (e.g., the "GitHub repo" bullet and the "npm / PyPI / registry" bullet)
can be executed deterministically with the declared generic tools.
.steering/skills/laravel-research/SKILL.md (1)

54-54: ⚠️ Potential issue | 🟠 Major

The author fallback path is still incorrect and won't resolve authors reliably.

The current fallback to package.authors[0].name references a field that does not exist at the package level in Packagist JSON responses. The authors field only exists within version objects (versions.<version>.authors), not at the top-level package object.

As indicated in the previous review, when package.maintainers is empty or missing, the fallback should read from the most recent tagged release version's authors metadata: versions[<latest-release>].authors[0].name, not package.authors[0].name.

This will cause the author field to remain blank for any package that lacks maintainers, even when valid author metadata exists in release versions.

📝 Proposed fix to use correct fallback path
-| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `package.maintainers[0].name`, or fall back to `package.authors[0].name`; do not rely on the `versions.dev-master` key as it may be absent |
+| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `package.maintainers[0].name` (preferred); if maintainers is empty, fall back to the most recent tagged release: `versions[<latest-release>].authors[0].name` |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/skills/laravel-research/SKILL.md at line 54, The author fallback
is incorrect: instead of reading package.authors[0].name (which doesn't exist),
update the specification for the `author` mapping to attempt
package.maintainers[0].name and if empty/missing, select the most recent tagged
release under `versions` and read its first author via
versions[<latest-release>].authors[0].name; ensure the text clarifies how to
determine the "latest tagged release" (ignore dev-master) and that maintainers
are preferred over version authors.
.steering/README.md (1)

27-31: ⚠️ Potential issue | 🟠 Major

Sync contract is currently violated (CI failing).

Verify steering sync is failing right now, so mirrors were not fully regenerated/committed with this change set. Please regenerate and commit .cursor, .claude, and .github mirrors together with .steering updates before merge.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/README.md around lines 27 - 31, The CI "Verify steering sync"
failed because the mirrors for .cursor, .claude, and .github were not
regenerated/committed alongside the changes to .steering; regenerate the mirror
files from .steering (follow the README steps: edit under .steering, replicate
to the three IDE roots and three template paths), ensure the three mirrors
(.cursor, .claude, .github) are updated to match .steering, and commit .steering
plus those mirror files in the same change so the CI verify-steering-sync check
passes.
.github/skills/tailwindcss-development/SKILL.md (1)

3-3: ⚠️ Potential issue | 🟠 Major

Skill description claims v3/v4 support but only implements v4 guidance.

The description at line 3 includes "Tailwind v3/v4 work," yet the skill body (lines 22–67) provides only v4-specific patterns. Line 24 unconditionally mandates "Always use Tailwind CSS v4," and the v4 Specifics section includes rules (like corePlugins not being supported) that do not apply to v3. This creates a mismatch: users invoking the skill on v3 projects will receive incorrect guidance.

Recommended fix

Option 1 (simpler): Update the description to declare the skill as v4-only:

-description: "Always invoke when the user's message includes 'tailwind' in any form. Also invoke for: building responsive grid layouts (multi-column card grids, product grids), flex/grid page structures (dashboards with sidebars, fixed topbars, mobile-toggle navs), styling UI components (cards, tables, navbars, pricing sections, forms, inputs, badges), adding dark mode variants, fixing spacing or typography, and Tailwind v3/v4 work. The core use case: writing or fixing Tailwind utility classes in HTML templates (Blade, JSX, Vue). Skip for backend PHP logic, database queries, API routes, JavaScript with no HTML/CSS component, CSS file audits, build tool configuration, and vanilla CSS."
+description: "Always invoke when the user's message includes 'tailwind' in any form. Also invoke for: building responsive grid layouts (multi-column card grids, product grids), flex/grid page structures (dashboards with sidebars, fixed topbars, mobile-toggle navs), styling UI components (cards, tables, navbars, pricing sections, forms, inputs, badges), adding dark mode variants, fixing spacing or typography, and Tailwind v4 work. The core use case: writing or fixing Tailwind utility classes in HTML templates (Blade, JSX, Vue). Skip for backend PHP logic, database queries, API routes, JavaScript with no HTML/CSS component, CSS file audits, build tool configuration, and vanilla CSS."

Option 2 (comprehensive): Add a "Tailwind CSS v3 Specifics" section and make line 24's mandate conditional based on detected project version.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/tailwindcss-development/SKILL.md at line 3, The skill text
currently claims "Tailwind v3/v4 work" but enforces v4-only rules (notably the
line that mandates "Always use Tailwind CSS v4" and the "v4 Specifics" section);
fix by either updating the top-level description to state v4-only, or implement
proper v3 support: add a new "Tailwind CSS v3 Specifics" section with
v3-appropriate guidance and change the hard mandate so the guidance is
conditional based on detected project version (e.g., replace the unconditional
"Always use Tailwind CSS v4" directive with wording or logic that selects v3 or
v4 guidance when the project version is detected), and ensure rules about
corePlugins and other v4-only features remain in the v4 section while v3
differences are documented in the v3 section.
README.md (1)

5-11: ⚠️ Potential issue | 🟠 Major

Mirror drift is still blocking CI; regenerate and commit mirrors together.

Verify steering sync is failing right now, so this PR remains blocked until generated mirrors are refreshed from .steering and committed in the same change set.

🔁 Suggested remediation
+ # From repo root:
+ python3 scripts/regenerate-ide-mirrors.py
+ git diff -- .cursor .claude .github
+ # Commit regenerated mirror files together with .steering edits.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 5 - 11, CI is failing due to mirror drift between
`.steering` and its mirrors; regenerate all mirrors from `.steering` (per
`.steering/README.md`) and commit the regenerated files in the same PR so
`.cursor`, `.claude`, and `.github` stay in sync; ensure the change set includes
the updated mirrored files and re-run the Verify steering sync job to confirm
the CI check passes.
🧹 Nitpick comments (16)
.steering/github-copilot/Agentic Workflows.md (2)

22-22: Drop marketing query params from permanent docs links.

Line 22 includes UTM parameters. For long-lived internal docs, a clean URL is easier to maintain and review.

Proposed doc cleanup
-**Product / docs hub:** [github.github.com/gh-aw](https://github.github.com/gh-aw/?utm_source=blog-agentic-workflows-cta&utm_medium=blog&utm_campaign=agentic-workflows-tech-preview-feb-2026)
+**Product / docs hub:** [github.github.com/gh-aw](https://github.github.com/gh-aw/)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Agentic Workflows.md at line 22, The quoted docs
link includes tracking query params; remove the UTM query string from the
markdown link text so the "Product / docs hub:" link points to the clean
permanent URL (replace
"https://github.github.com/gh-aw/?utm_source=blog-agentic-workflows-cta&utm_medium=blog&utm_campaign=agentic-workflows-tech-preview-feb-2026"
with "https://github.github.com/gh-aw" in the same markdown line).

15-15: Unify and verify the canonical gh-aw docs domain.

Line 15/22/37/44/56+/97+ mix github.github.com and github.github.io for seemingly the same documentation tree. This can cause stale or broken references over time. Please standardize on the canonical host and update all links consistently.

Proposed doc cleanup
-gh_aw_hub: https://github.github.com/gh-aw/
+gh_aw_hub: https://github.github.io/gh-aw/

Then align all in-body gh-aw doc links to the same base host.

Also applies to: 22-22, 37-37, 44-45, 56-60, 64-65, 97-100

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Agentic Workflows.md at line 15, Replace all
occurrences of the inconsistent gh-aw docs host with the canonical host (use
github.github.io) by updating the gh_aw_hub entry and every in-body `gh-aw`
link; specifically change the value for the gh_aw_hub key ("gh_aw_hub:
https://github.github.com/gh-aw/") to the canonical URL
("https://github.github.io/gh-aw/") and search the document for any other gh-aw
links (lines referenced in the review: 22, 37, 44-45, 56-60, 64-65, 97-100) to
normalize them to the same github.github.io base so all references point to the
unified canonical host.
.steering/github-copilot/Environment.md (1)

92-92: Consider link format consistency.

The Obsidian link [[GitHub Copilot]] uses a different format than the related frontmatter links (e.g., [[github-copilot/Agents]]). If this is a root-level index, it's fine; otherwise, consider using a consistent path prefix for all internal links.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Environment.md at line 92, The Obsidian anchor
[[GitHub Copilot]] is inconsistent with other internal links that use the
github-copilot/ prefix (e.g., [[github-copilot/Agents]]); update the link to
follow the same path style (for example replace [[GitHub Copilot]] with
[[github-copilot/GitHub Copilot]] or the appropriate subpath) so all internal
links use a consistent namespace, or confirm it's intentionally root-level and
make other links match that pattern.
.steering/github-copilot/SDK.md (2)

29-37: Add blank lines around the deployment patterns table.

Markdown tables should be surrounded by blank lines for proper rendering and to satisfy linting rules.

📝 Proposed fix
 - **Deployment Patterns**:
+
   | Pattern | Description |
   |---------|-------------|
   | Local CLI | `copilot-sdk run` |
   | External Server | TCP/HTTP endpoints |
   | Bundled CLI | Embed in apps |
   | Docker Compose | Multi-container |
   | Session Isolation | Prod checklist |
+
 - **Permissions/Input Handlers**: Deny-by-default model.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/SDK.md around lines 29 - 37, The Markdown table
under the "**Deployment Patterns**" heading lacks surrounding blank lines;
update the section so there is an empty line before the "**Deployment
Patterns**:" line and an empty line after the table (i.e., insert one blank line
above the table start and one blank line after the table end) to ensure correct
rendering and satisfy linting rules.

42-47: Add language identifier to the directory structure code block.

The code block should specify text as the language identifier to improve rendering and address the linting warning.

📝 Proposed fix
-```
+```text
 .github/skills/copilot-sdk/
 ├── SKILL.md          # Main instructions (~900 lines)
 └── references/       # Supporting docs/examples
     └── (various files for tests/acceptance criteria)
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/SDK.md around lines 42 - 47, Update the markdown
code fence that renders the directory tree for ".github/skills/copilot-sdk/" to
include the language identifier "text" (change the opening totext) so
the block is text ... ; locate the code block containing the directory
listing starting with ".github/skills/copilot-sdk/" and modify its opening fence
accordingly.


</details>

</blockquote></details>
<details>
<summary>.claude/skills/skill-template/SKILL.md (2)</summary><blockquote>

`63-65`: **Add language identifier to the code block.**

The validation command block should specify `bash` or `shell` as the language identifier to improve syntax highlighting and fix the linting warning.



<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```bash
 skills-ref validate ./my-skill
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/skill-template/SKILL.md around lines 63 - 65, The fenced code
block containing the validation command skills-ref validate ./my-skill in
SKILL.md lacks a language identifier; update the opening triple-backtick to
include a shell language (e.g., bash or shell) so the block becomes
bash and retains the command on the next line, then close with to satisfy
linting and enable proper syntax highlighting.


</details>

---

`25-32`: **Add language identifier to fenced code block.**

The code block lacks a language identifier, which reduces readability and causes linting warnings. Since this is a directory tree structure, use `text` or leave it as plain text with a language identifier.



<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
 ├── scripts/          # Optional: Executable code (e.g., extract.py)
 ├── references/       # Optional: Docs (e.g., REFERENCE.md)
 ├── assets/           # Optional: Templates, images, data
 └── ...               # Additional files
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/skill-template/SKILL.md around lines 25 - 32, The fenced code
block in SKILL.md showing the directory tree lacks a language identifier; update
the triple-backtick fence surrounding the tree to include a language (e.g., use

warnings are resolved—edit the SKILL.md fenced block that contains "skill-name/"
and the subsequent tree lines to start with ```text and keep the closing ```
unchanged.
.steering/github-copilot/plugins/Deep Wiki.md (1)

23-27: Consider adding language identifiers to fenced code blocks.

The fenced code blocks on lines 23-27, 30-32, and 95-103 are missing language identifiers, which would improve syntax highlighting and accessibility.

📝 Proposed refinement
 ### From Marketplace (Recommended)
-```
+```bash
 # Inside Copilot CLI
 /plugin marketplace add microsoft/skills
 /plugin install deep-wiki@skills

Local Install

- +bash
copilot --plugin-dir ./deep-wiki

 ## Plugin Structure

-```
+```text
 .github/plugins/deep-wiki/
 ├── .claude-plugin/          # Claude integration
 ├── commands/                # CLI commands

Also applies to: 30-32, 95-103

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/plugins/Deep Wiki.md around lines 23 - 27, Add
language identifiers to the three fenced code blocks: the block beginning with
"# Inside Copilot CLI" (use ```bash), the "Local Install" block that contains
"copilot --plugin-dir ./deep-wiki" (use ```bash), and the directory tree block
that starts ".github/plugins/deep-wiki/" (use ```text) so they provide proper
syntax highlighting and accessibility; update each opening triple-backtick to
include the suggested language token and leave the closing backticks unchanged.
.steering/templates/laravel-package.md (1)

102-104: Label the API fence language for lint compliance.

Line 102 starts an unlabeled fenced block. Add a language (for example http or text) to satisfy markdownlint MD040.

Proposed fix
-```
+```http
 POST /api/v1/package/upload/example-importer
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.steering/templates/laravel-package.md around lines 102 - 104, The fenced
code block containing "POST /api/v1/package/upload/example-importer" is
unlabeled; update that triple-backtick fence (the block that currently starts
with just before the POST line in the template) to include a language label such as http (e.g., change to ```http) so markdownlint MD040 is satisfied.


</details>

</blockquote></details>
<details>
<summary>.cursor/skills/agentic-programming/SKILL.md (1)</summary><blockquote>

`30-32`: **Add languages to fenced command examples.**

Line 30 and Line 36 use unlabeled fenced blocks, which triggers markdownlint (MD040). Use `bash` for both command snippets.


<details>
<summary>Proposed fix</summary>

```diff
-```
+```bash
 /laravel-package <vendor/package>
 ```
@@
-```
+```bash
 /laravel-package spatie/laravel-markdown-response
 ```
```
</details>


Also applies to: 36-38

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/agentic-programming/SKILL.md around lines 30 - 32, The two
unlabeled fenced code blocks containing the commands "/laravel-package
<vendor/package>" and "/laravel-package spatie/laravel-markdown-response" should
be marked with the bash language to satisfy markdownlint MD040; update each
triple-backtick opener to "```bash" so both command snippets are fenced as bash.


</details>

</blockquote></details>
<details>
<summary>.claude/skills/laravel-research/SKILL.md (2)</summary><blockquote>

`36-39`: **Clarify the `composer_require` placeholder in the Installation block.**

Line 38 shows `composer_require` without backticks or interpolation syntax. If this is a template placeholder meant to be replaced with the actual `composer require` command from frontmatter, consider using clearer substitution syntax (e.g., `${composer_require}` or `{{composer_require}}`) or adding a comment explaining that agents should replace it with the frontmatter value.


<details>
<summary>📝 Proposed clarification</summary>

```diff
 ## Installation
 ```bash
-composer_require
+# Replace with the frontmatter composer_require value:
+# Example: composer require VENDOR/package-name
+composer require VENDOR/package-name
 ```
```

Or use explicit placeholder syntax:
```diff
 ## Installation
 ```bash
-composer_require
+{{composer_require}}
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/laravel-research/SKILL.md around lines 36 - 39, The
Installation block currently shows the ambiguous placeholder "composer_require";
update the SKILL.md to replace or clarify this placeholder by using explicit
substitution syntax or an explanatory example so agents know to insert the
frontmatter value—e.g., change the bare token "composer_require" to a clear
placeholder like "{{composer_require}}" or "${composer_require}" or replace it
with an example command such as "composer require VENDOR/package-name", and add
a short comment line indicating it should be substituted from the frontmatter;
look for the "composer_require" token in the Installation section to make this
change.
```

</details>

---

`54-54`: **Consider adding dev-main fallback guidance for version-key extraction.**

While the current guidance correctly warns against relying on `versions.dev-master` and recommends using `package.maintainers[0].name` first, implementers who do attempt version-key extraction should be aware that modern packages use `dev-main` instead of `dev-master`. Consider adding a brief note about this fallback order if version keys are used: `versions["dev-main"]` → `versions["dev-master"]` → latest stable version.


<details>
<summary>📝 Proposed enhancement</summary>

```diff
-| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `package.maintainers[0].name`, or fall back to `package.authors[0].name`; do not rely on the `versions.dev-master` key as it may be absent |
+| `author` | Packagist JSON (`packagist.org/packages/<v>/<p>.json`) → `package.maintainers[0].name`, or fall back to `package.authors[0].name`; if using version keys, try `versions["dev-main"]` before `versions["dev-master"]` as modern packages use `main` as the default branch |
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/laravel-research/SKILL.md at line 54, Add guidance noting
that when implementers must extract version keys from Packagist JSON, they
should prefer versions["dev-main"] as the modern fallback before
versions["dev-master"], and then fall back to the latest stable version; also
keep the primary recommendation to use package.maintainers[0].name then
package.authors[0].name instead of relying on version keys. Mention the exact
fallback order: versions["dev-main"] → versions["dev-master"] → latest stable
version, and reference the Packagist JSON structure (package.maintainers,
package.authors, versions) so readers can locate the fields to check.
```

</details>

</blockquote></details>
<details>
<summary>.cursor/skills/laravel-research/SKILL.md (1)</summary><blockquote>

`36-39`: **Clarify the `composer_require` placeholder in the Installation block.**

Line 38 shows `composer_require` without backticks or interpolation syntax. If this is a template placeholder meant to be replaced with the actual `composer require` command from frontmatter, consider using clearer substitution syntax (e.g., `${composer_require}` or `{{composer_require}}`) or adding a comment explaining that agents should replace it with the frontmatter value.


<details>
<summary>📝 Proposed clarification</summary>

```diff
 ## Installation
 ```bash
-composer_require
+# Replace with the frontmatter composer_require value:
+# Example: composer require VENDOR/package-name
+composer require VENDOR/package-name
 ```
```

Or use explicit placeholder syntax:
```diff
 ## Installation
 ```bash
-composer_require
+{{composer_require}}
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/laravel-research/SKILL.md around lines 36 - 39, The
Installation section currently shows a raw placeholder "composer_require" in
SKILL.md; update the Installation block to either interpolate the frontmatter
value (e.g., use a clear placeholder like {{composer_require}} or
${composer_require}) or replace it with an explicit example command (e.g.,
"composer require VENDOR/package-name") and add a short inline comment
indicating agents should swap in the frontmatter value; target the
"composer_require" token in the Installation block and ensure the markdown code
fence shows the chosen substitution or example.
```

</details>

</blockquote></details>
<details>
<summary>.steering/agents/research-skill.agent.md (1)</summary><blockquote>

`21-21`: **Consider referencing only the canonical template path.**

Line 21 hardcodes four template locations. Since `.steering/templates/skill.md` is canonical and the mirrors are automatically synced, the agent instruction could reference only the canonical path to reduce maintenance overhead.


<details>
<summary>♻️ Suggested simplification</summary>

```diff
-Before researching the remote skill, **read the local skill-template spec** in this workspace: `.steering/templates/skill.md` (canonical), or the same content at `.github/skills/skill-research/skill-template.md`, `.claude/skills/skill-template/SKILL.md`, or `.cursor/skills/skill-template/SKILL.md`. Use its vocabulary and rules when you interpret the upstream skill and when you write the research note.
+Before researching the remote skill, **read the local skill-template spec** at `.steering/templates/skill.md` (canonical; mirrored to IDE-specific paths via sync). Use its vocabulary and rules when you interpret the upstream skill and when you write the research note.
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/research-skill.agent.md at line 21, Update the instruction
that lists multiple template paths to reference only the canonical template
`.steering/templates/skill.md`; specifically change the sentence starting
"Before researching the remote skill, read the local skill-template spec..." to
mention only `.steering/templates/skill.md` so the agent uses that canonical
file and its vocabulary/rules rather than hardcoding the four mirrored
locations.
```

</details>

</blockquote></details>
<details>
<summary>.github/agents/research-skill.agent.md (1)</summary><blockquote>

`21-21`: **Consider referencing only the canonical template path.**

Line 21 hardcodes four template locations. Since `.steering/templates/skill.md` is canonical and the mirrors are automatically synced, the agent instruction could reference only the canonical path to reduce maintenance overhead.


<details>
<summary>♻️ Suggested simplification</summary>

```diff
-Before researching the remote skill, **read the local skill-template spec** in this workspace: `.steering/templates/skill.md` (canonical), or the same content at `.github/skills/skill-research/skill-template.md`, `.claude/skills/skill-template/SKILL.md`, or `.cursor/skills/skill-template/SKILL.md`. Use its vocabulary and rules when you interpret the upstream skill and when you write the research note.
+Before researching the remote skill, **read the local skill-template spec** at `.steering/templates/skill.md` (canonical; mirrored to IDE-specific paths via sync). Use its vocabulary and rules when you interpret the upstream skill and when you write the research note.
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/agents/research-skill.agent.md at line 21, Replace the hardcoded
list of four template locations in the sentence that starts "Before researching
the remote skill, read the local skill-template spec" so it references only the
canonical template `.steering/templates/skill.md`; remove the other mirror paths
and keep the instruction to use that canonical template's vocabulary and rules
when interpreting the upstream skill and writing the research note.
```

</details>

</blockquote></details>
<details>
<summary>.claude/agents/sync-skills.md (1)</summary><blockquote>

`6-10`: **Consider breaking the dense source-of-truth paragraph.**

Line 10 packs canonical source declaration, byte-identical mirroring, and skill-research special handling into a single 85-word sentence. While technically accurate, splitting it into 2-3 sentences would improve readability:

<details>
<summary>♻️ Optional clarity refactor</summary>

```diff
-**`.steering/`** holds canonical **agents** (`agents/`) and **packaged skills** (`skills/<name>/SKILL.md`), plus **`templates/skill.md`** (the skill spec). Packaged skills are **byte-identical** across `.cursor`, `.claude`, and `.github` **except** **`skill-research`**: **`![[github-copilot/...]]`** expands only in **`.cursor/skills/skill-research/`**; **`.github`** and **`.claude`** get a pointer to **`.steering/github-copilot/Skills.md`** instead. **Agents:** see **sync-agents** (includes the same **`github-copilot/`** rule for **`research-skill.agent.md`** on **`.cursor`** only).
+**`.steering/`** holds canonical **agents** (`agents/`) and **packaged skills** (`skills/<name>/SKILL.md`), plus **`templates/skill.md`** (the skill spec).
+
+Packaged skills are **byte-identical** across `.cursor`, `.claude`, and `.github` **except** **`skill-research`**: **`![[github-copilot/...]]`** embeds expand only in **`.cursor/skills/skill-research/`**; **`.github`** and **`.claude`** get a pointer to **`.steering/github-copilot/Skills.md`** instead.
+
+**Agents:** see **sync-agents** (includes the same **`github-copilot/`** rule for **`research-skill.agent.md`** on **`.cursor`** only).
```

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.claude/agents/sync-skills.md around lines 6 - 10, The paragraph under
"Source of truth" is too dense; split it into 2–3 clearer sentences to improve
readability while preserving all facts: state that `.steering/` is the canonical
source containing `agents/`, packaged `skills/<name>/SKILL.md`, and
`templates/skill.md`; then add a second sentence explaining that packaged skills
are byte-identical across `.cursor`, `.claude`, and `.github` with the exception
of `skill-research`, and a third sentence describing the
`![[github-copilot/...]]` expansion behavior (only expanding into
`.cursor/skills/skill-research/` while `.github` and `.claude` point to
`.steering/github-copilot/Skills.md`), and similarly note the `sync-agents` rule
for `research-skill.agent.md`.
```

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.cursor/skills/skill-template/SKILL.md:

  • Around line 25-32: Update the two fenced code blocks in SKILL.md to include
    language identifiers to satisfy markdownlint MD040: add "text" to the
    directory-tree block starting with "skill-name/" and add "bash" to the command
    block containing "skills-ref validate ./my-skill"; repeat the same fix for the
    other fenced block at lines ~63-65 so all fenced blocks have explicit languages.

In @.github/agents/sync-agents.md:

  • Around line 14-15: The sync documentation (.github/agents/sync-agents.md)
    incorrectly states that only *.agent.md under .steering/agents/ are
    mirrored, while the actual generator/regeneration script currently copies every
    file in .steering/agents/ (producing mirrored files like sync-agents.md /
    sync-skills.md); update the docs or the generator so they match: either change
    the text in .github/agents/sync-agents.md to accurately describe the generator
    behavior (that all files in .steering/agents/ except README.md are mirrored
    to the agents mirrors) or modify the regeneration script to enforce the narrower
    *.agent.md filter; reference the files .github/agents/sync-agents.md,
    .steering/agents/ and the regeneration script responsible for mirroring when
    making the fix.

In @.github/skills/agentic-programming/SKILL.md:

  • Around line 30-32: The two fenced command blocks showing "/laravel-package
    <vendor/package>" and "/laravel-package spatie/laravel-markdown-response" lack
    language tags; update those two triple-backtick fences in SKILL.md to use a
    language tag (e.g., ```text) so the blocks read as fenced code with text
    specified for both occurrences.

In @.github/skills/skill-research/skill-template.md:

  • Line 25: The fenced code blocks in SKILL.md are missing language identifiers
    (triggering MD040); update the triple-backtick blocks that contain the directory
    tree (the block starting with "skill-name/") and the command example
    ("skills-ref validate ./my-skill") to include appropriate languages (e.g.,
    text or bash) so markdownlint is satisfied; locate the backtick fences in
    skill-template.md and add the language tokens immediately after the opening ```
    for those two blocks.

In @.steering/agents/sync-agents.md:

  • Line 23: The example heading marker uses a code span with a trailing space (`## `) which triggers MD038; update the example to use a code span without
    the trailing space (`##`) or rephrase the sentence to avoid a code span
    containing trailing whitespace, e.g. change the text that mentions "## Heading
    section: from that heading until the next ## , an --- line..." to reference
    "##" (no space) so the lint rule is satisfied; ensure occurrences in the same
    paragraph referencing the heading marker are updated consistently (look for the
    strings "## ", "## Heading", and the surrounding sentence).

In @.steering/github-copilot/Agent MCP.md:

  • Around line 45-51: The Server Types table under the "Server Types" heading
    violates MD058 by lacking blank lines around the Markdown table; update the
    document so there is a blank line immediately before the table (above the line
    "| Type | Config Keys | Example |") and a blank line immediately after the table
    (after the last row "Remote Streamable HTTP ..."), leaving the "Server Types"
    header and the table contents unchanged.
  • Around line 52-58: The Variable Substitution table under the "## Variable
    Substitution" heading needs blank lines inserted before and after the table;
    update the markdown around that table (the block containing the header row "|
    Syntax | Example |" and the subsequent rows) to ensure there is an empty line
    separating the heading and the table and another empty line after the final
    table row.

In @.steering/github-copilot/Memories.md:

  • Line 61: Update the wiki link label string '[[Github Copilot]]' to use the
    official product casing '[[GitHub Copilot]]' so the link label matches branding;
    locate the occurrence of the exact token '[[Github Copilot]]' in Memories.md and
    replace it with '[[GitHub Copilot]]'.

In @.steering/github-copilot/Prompts.md:

  • Line 64: Update the MCP wildcard example in the tools table by removing the
    space in the pattern: replace the invalid server /* token with the correct
    server/* token so the example matches VS Code Copilot syntax and will
    correctly match all tools from an MCP server; ensure the surrounding table cell
    text remains otherwise unchanged.

In @.steering/mcps/deepwiki__mcp.md:

  • Line 8: Replace the non-standard MCP label "transport: both" with the official
    transport term "transport: streamable-http" in the metadata entry (update the
    line that currently reads transport: both), and if you must advertise both
    endpoints add two separate entries instead of "both" — e.g., one metadata line
    for "transport: streamable-http" with URL https://mcp.deepwiki.com/mcp and a
    separate metadata line for "transport: sse" with URL
    https://mcp.deepwiki.com/sse; ensure you only use the official MCP transport
    labels (stdio, streamable-http, sse) and remove the "both" value.

In @.steering/skills/livewire-development/SKILL.md:

  • Around line 172-180: Update the component-scoped interceptor example to use
    the Livewire 4 syntax: replace the incorrect this.$intercept('save', ...) usage
    with $wire.intercept('save', ...) in the "Component-scoped interceptors" example
    so it matches the $wire.intercept pattern used elsewhere and conforms to
    Livewire 4; ensure the example script references $wire.intercept rather than
    this.$intercept.

In @scripts/regenerate-ide-mirrors.py:

  • Around line 65-85: The extract_section function currently omits the matched
    heading because it begins iterating at lines[start + 1]; update extract_section
    so it includes the heading line (the line matching target) in the output before
    collecting subsequent lines and still stops on the same delimiters (---, other
    "## " headings, or top-level "# "). Locate the target/ start detection logic in
    extract_section and change the iteration or initial out append so the matched
    "## " + heading line is preserved while keeping the existing break conditions
    intact.

Duplicate comments:
In @.github/agents/research-mcp.agent.md:

  • Around line 28-34: Update the runtime instructions so they match the declared
    frontmatter tools: either reintroduce explicit MCP tool configuration (add the
    "GitHub MCP" and "DeepWiki" tool entries to the frontmatter and ensure the
    bullet "GitHub repo (via GitHub MCP + DeepWiki)" uses those tools), or make the
    bullets tool-agnostic by removing mentions of "GitHub MCP + DeepWiki" and
    changing that bullet to a generic instruction like "GitHub repo (via repository
    search/inspection)" so the steps (e.g., the "GitHub repo" bullet and the "npm /
    PyPI / registry" bullet) can be executed deterministically with the declared
    generic tools.

In @.github/skills/tailwindcss-development/SKILL.md:

  • Line 3: The skill text currently claims "Tailwind v3/v4 work" but enforces
    v4-only rules (notably the line that mandates "Always use Tailwind CSS v4" and
    the "v4 Specifics" section); fix by either updating the top-level description to
    state v4-only, or implement proper v3 support: add a new "Tailwind CSS v3
    Specifics" section with v3-appropriate guidance and change the hard mandate so
    the guidance is conditional based on detected project version (e.g., replace the
    unconditional "Always use Tailwind CSS v4" directive with wording or logic that
    selects v3 or v4 guidance when the project version is detected), and ensure
    rules about corePlugins and other v4-only features remain in the v4 section
    while v3 differences are documented in the v3 section.

In @.steering/README.md:

  • Around line 27-31: The CI "Verify steering sync" failed because the mirrors
    for .cursor, .claude, and .github were not regenerated/committed alongside the
    changes to .steering; regenerate the mirror files from .steering (follow the
    README steps: edit under .steering, replicate to the three IDE roots and three
    template paths), ensure the three mirrors (.cursor, .claude, .github) are
    updated to match .steering, and commit .steering plus those mirror files in the
    same change so the CI verify-steering-sync check passes.

In @.steering/skills/laravel-research/SKILL.md:

  • Line 54: The author fallback is incorrect: instead of reading
    package.authors[0].name (which doesn't exist), update the specification for the
    author mapping to attempt package.maintainers[0].name and if empty/missing,
    select the most recent tagged release under versions and read its first author
    via versions[].authors[0].name; ensure the text clarifies how to
    determine the "latest tagged release" (ignore dev-master) and that maintainers
    are preferred over version authors.

In @README.md:

  • Around line 5-11: CI is failing due to mirror drift between .steering and
    its mirrors; regenerate all mirrors from .steering (per .steering/README.md)
    and commit the regenerated files in the same PR so .cursor, .claude, and
    .github stay in sync; ensure the change set includes the updated mirrored
    files and re-run the Verify steering sync job to confirm the CI check passes.

Nitpick comments:
In @.claude/agents/sync-skills.md:

  • Around line 6-10: The paragraph under "Source of truth" is too dense; split it
    into 2–3 clearer sentences to improve readability while preserving all facts:
    state that .steering/ is the canonical source containing agents/, packaged
    skills/<name>/SKILL.md, and templates/skill.md; then add a second sentence
    explaining that packaged skills are byte-identical across .cursor, .claude,
    and .github with the exception of skill-research, and a third sentence
    describing the ![[github-copilot/...]] expansion behavior (only expanding into
    .cursor/skills/skill-research/ while .github and .claude point to
    .steering/github-copilot/Skills.md), and similarly note the sync-agents rule
    for research-skill.agent.md.

In @.claude/skills/laravel-research/SKILL.md:

  • Around line 36-39: The Installation block currently shows the ambiguous
    placeholder "composer_require"; update the SKILL.md to replace or clarify this
    placeholder by using explicit substitution syntax or an explanatory example so
    agents know to insert the frontmatter value—e.g., change the bare token
    "composer_require" to a clear placeholder like "{{composer_require}}" or
    "${composer_require}" or replace it with an example command such as "composer
    require VENDOR/package-name", and add a short comment line indicating it should
    be substituted from the frontmatter; look for the "composer_require" token in
    the Installation section to make this change.
  • Line 54: Add guidance noting that when implementers must extract version keys
    from Packagist JSON, they should prefer versions["dev-main"] as the modern
    fallback before versions["dev-master"], and then fall back to the latest stable
    version; also keep the primary recommendation to use package.maintainers[0].name
    then package.authors[0].name instead of relying on version keys. Mention the
    exact fallback order: versions["dev-main"] → versions["dev-master"] → latest
    stable version, and reference the Packagist JSON structure (package.maintainers,
    package.authors, versions) so readers can locate the fields to check.

In @.claude/skills/skill-template/SKILL.md:

  • Around line 63-65: The fenced code block containing the validation command
    skills-ref validate ./my-skill in SKILL.md lacks a language identifier; update
    the opening triple-backtick to include a shell language (e.g., bash or shell) so the block becomes bash and retains the command on the next line, then close with to satisfy linting and enable proper syntax highlighting.
  • Around line 25-32: The fenced code block in SKILL.md showing the directory
    tree lacks a language identifier; update the triple-backtick fence surrounding
    the tree to include a language (e.g., use text) so the block is recognized as plain text and linting/readability warnings are resolved—edit the SKILL.md fenced block that contains "skill-name/" and the subsequent tree lines to start with text and keep the closing ``` unchanged.

In @.cursor/skills/agentic-programming/SKILL.md:

  • Around line 30-32: The two unlabeled fenced code blocks containing the
    commands "/laravel-package <vendor/package>" and "/laravel-package
    spatie/laravel-markdown-response" should be marked with the bash language to
    satisfy markdownlint MD040; update each triple-backtick opener to "```bash" so
    both command snippets are fenced as bash.

In @.cursor/skills/laravel-research/SKILL.md:

  • Around line 36-39: The Installation section currently shows a raw placeholder
    "composer_require" in SKILL.md; update the Installation block to either
    interpolate the frontmatter value (e.g., use a clear placeholder like
    {{composer_require}} or ${composer_require}) or replace it with an explicit
    example command (e.g., "composer require VENDOR/package-name") and add a short
    inline comment indicating agents should swap in the frontmatter value; target
    the "composer_require" token in the Installation block and ensure the markdown
    code fence shows the chosen substitution or example.

In @.github/agents/research-skill.agent.md:

  • Line 21: Replace the hardcoded list of four template locations in the sentence
    that starts "Before researching the remote skill, read the local skill-template
    spec" so it references only the canonical template
    .steering/templates/skill.md; remove the other mirror paths and keep the
    instruction to use that canonical template's vocabulary and rules when
    interpreting the upstream skill and writing the research note.

In @.steering/agents/research-skill.agent.md:

  • Line 21: Update the instruction that lists multiple template paths to
    reference only the canonical template .steering/templates/skill.md;
    specifically change the sentence starting "Before researching the remote skill,
    read the local skill-template spec..." to mention only
    .steering/templates/skill.md so the agent uses that canonical file and its
    vocabulary/rules rather than hardcoding the four mirrored locations.

In @.steering/github-copilot/Agentic Workflows.md:

In @.steering/github-copilot/Environment.md:

  • Line 92: The Obsidian anchor [[GitHub Copilot]] is inconsistent with other
    internal links that use the github-copilot/ prefix (e.g.,
    [[github-copilot/Agents]]); update the link to follow the same path style (for
    example replace [[GitHub Copilot]] with [[github-copilot/GitHub Copilot]] or the
    appropriate subpath) so all internal links use a consistent namespace, or
    confirm it's intentionally root-level and make other links match that pattern.

In @.steering/github-copilot/plugins/Deep Wiki.md:

  • Around line 23-27: Add language identifiers to the three fenced code blocks:
    the block beginning with "# Inside Copilot CLI" (use bash), the "Local Install" block that contains "copilot --plugin-dir ./deep-wiki" (use bash),
    and the directory tree block that starts ".github/plugins/deep-wiki/" (use
each opening triple-backtick to include the suggested language token and leave
the closing backticks unchanged.

In @.steering/github-copilot/SDK.md:
- Around line 29-37: The Markdown table under the "**Deployment Patterns**"
heading lacks surrounding blank lines; update the section so there is an empty
line before the "**Deployment Patterns**:" line and an empty line after the
table (i.e., insert one blank line above the table start and one blank line
after the table end) to ensure correct rendering and satisfy linting rules.
- Around line 42-47: Update the markdown code fence that renders the directory
tree for ".github/skills/copilot-sdk/" to include the language identifier "text"
(change the opening ``` to ```text) so the block is ```text ... ```; locate the
code block containing the directory listing starting with
".github/skills/copilot-sdk/" and modify its opening fence accordingly.

In @.steering/templates/laravel-package.md:
- Around line 102-104: The fenced code block containing "POST
/api/v1/package/upload/example-importer" is unlabeled; update that
triple-backtick fence (the block that currently starts with ``` just before the
POST line in the template) to include a language label such as http (e.g.,
change ``` to ```http) so markdownlint MD040 is satisfied.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2780c4d6-bff5-493b-bd3d-89d9474f3b89

📥 Commits

Reviewing files that changed from the base of the PR and between 5e51623 and dec0adb.

⛔ Files ignored due to path filters (2)
  • scripts/__pycache__/regenerate-ide-mirrors.cpython-312.pyc is excluded by !**/*.pyc
  • scripts/__pycache__/sync-boost-ai-skills.cpython-312.pyc is excluded by !**/*.pyc
📒 Files selected for processing (123)
  • .claude/agents/idea.agent.md
  • .claude/agents/laravel-package.agent.md
  • .claude/agents/research-mcp.agent.md
  • .claude/agents/research-skill.agent.md
  • .claude/agents/sync-agents.md
  • .claude/agents/sync-skills.md
  • .claude/skills/agentic-programming/SKILL.md
  • .claude/skills/fluxui-free-development/SKILL.md
  • .claude/skills/fluxui-pro-development/SKILL.md
  • .claude/skills/laravel-pint/SKILL.md
  • .claude/skills/laravel-research/SKILL.md
  • .claude/skills/laravel-sail/SKILL.md
  • .claude/skills/livewire-development/SKILL.md
  • .claude/skills/pest-testing/SKILL.md
  • .claude/skills/phpunit-laravel/SKILL.md
  • .claude/skills/skill-research/SKILL.md
  • .claude/skills/skill-template/SKILL.md
  • .claude/skills/sync-agents/SKILL.md
  • .claude/skills/sync-skills/SKILL.md
  • .claude/skills/tailwindcss-development/SKILL.md
  • .cursor/agents/idea.agent.md
  • .cursor/agents/laravel-package.agent.md
  • .cursor/agents/research-mcp.agent.md
  • .cursor/agents/research-skill.agent.md
  • .cursor/agents/sync-agents.md
  • .cursor/agents/sync-skills.md
  • .cursor/skills/agentic-programming/SKILL.md
  • .cursor/skills/fluxui-free-development/SKILL.md
  • .cursor/skills/fluxui-pro-development/SKILL.md
  • .cursor/skills/laravel-pint/SKILL.md
  • .cursor/skills/laravel-research/SKILL.md
  • .cursor/skills/laravel-sail/SKILL.md
  • .cursor/skills/livewire-development/SKILL.md
  • .cursor/skills/pest-testing/SKILL.md
  • .cursor/skills/phpunit-laravel/SKILL.md
  • .cursor/skills/skill-research/SKILL.md
  • .cursor/skills/skill-template/SKILL.md
  • .cursor/skills/sync-agents/SKILL.md
  • .cursor/skills/sync-skills/SKILL.md
  • .cursor/skills/tailwindcss-development/SKILL.md
  • .github/agents/idea.agent.md
  • .github/agents/laravel-package.agent.md
  • .github/agents/research-mcp.agent.md
  • .github/agents/research-skill.agent.md
  • .github/agents/skill-research.agent.md
  • .github/agents/sync-agents.md
  • .github/agents/sync-skills.md
  • .github/skills/agentic-programming/SKILL.md
  • .github/skills/fluxui-free-development/SKILL.md
  • .github/skills/fluxui-pro-development/SKILL.md
  • .github/skills/laravel-pint/SKILL.md
  • .github/skills/laravel-research/SKILL.md
  • .github/skills/laravel-research/laravel-package-template.md
  • .github/skills/laravel-sail/SKILL.md
  • .github/skills/livewire-development/SKILL.md
  • .github/skills/pest-testing/SKILL.md
  • .github/skills/phpunit-laravel/SKILL.md
  • .github/skills/skill-research/SKILL.md
  • .github/skills/skill-research/skill-template.md
  • .github/skills/sync-agents/SKILL.md
  • .github/skills/sync-skills/SKILL.md
  • .github/skills/tailwindcss-development/SKILL.md
  • .github/workflows/sync-skill-template.yml
  • .github/workflows/verify-steering-sync.yml
  • .steering/README.md
  • .steering/agents/idea.agent.md
  • .steering/agents/laravel-package.agent.md
  • .steering/agents/research-mcp.agent.md
  • .steering/agents/research-skill.agent.md
  • .steering/agents/sync-agents.md
  • .steering/agents/sync-skills.md
  • .steering/cursor/Agents.md
  • .steering/cursor/Hooks.md
  • .steering/cursor/Plugins.md
  • .steering/cursor/Rules.md
  • .steering/cursor/Skills.md
  • .steering/github-copilot/Agent MCP.md
  • .steering/github-copilot/Agentic Workflows.md
  • .steering/github-copilot/Agents.md
  • .steering/github-copilot/Environment.md
  • .steering/github-copilot/Memories.md
  • .steering/github-copilot/Plugins.md
  • .steering/github-copilot/Prompts.md
  • .steering/github-copilot/SDK.md
  • .steering/github-copilot/Settings.md
  • .steering/github-copilot/Skills.md
  • .steering/github-copilot/plugins/Deep Wiki.md
  • .steering/ideas/README.md
  • .steering/laravel-packages/README.md
  • .steering/laravel-packages/larastan__larastan.md
  • .steering/laravel-packages/laravel__pint.md
  • .steering/laravel-packages/livewire__flux.md
  • .steering/laravel-packages/pestphp__pest.md
  • .steering/mcp.json
  • .steering/mcps/deepwiki__mcp.md
  • .steering/mcps/github__github-mcp-server.md
  • .steering/mcps/upstash__context7.md
  • .steering/skills/.boost-ai-sync.json
  • .steering/skills/README.md
  • .steering/skills/SOURCES.md
  • .steering/skills/fluxui-free-development/SKILL.md
  • .steering/skills/fluxui-pro-development/SKILL.md
  • .steering/skills/laravel-pint/SKILL.md
  • .steering/skills/laravel-research/SKILL.md
  • .steering/skills/laravel-sail/SKILL.md
  • .steering/skills/livewire-development/SKILL.md
  • .steering/skills/pest-testing/SKILL.md
  • .steering/skills/phpunit-laravel/SKILL.md
  • .steering/skills/skill-research/SKILL.md
  • .steering/skills/sync-agents/SKILL.md
  • .steering/skills/sync-agents/tdd.md
  • .steering/skills/sync-skills/SKILL.md
  • .steering/skills/tailwindcss-development/SKILL.md
  • .steering/templates/AGENTS.md
  • .steering/templates/agent.md
  • .steering/templates/idea.md
  • .steering/templates/laravel-package.md
  • .steering/templates/skill.md
  • README.md
  • mcps/README.md
  • scripts/regenerate-ide-mirrors.py
  • scripts/sync-boost-ai-skills.py
  • templates/agents.md
💤 Files with no reviewable changes (7)
  • .steering/laravel-packages/README.md
  • .steering/templates/skill.md
  • mcps/README.md
  • .github/skills/laravel-research/laravel-package-template.md
  • .github/workflows/sync-skill-template.yml
  • templates/agents.md
  • .github/agents/skill-research.agent.md

Comment on lines +25 to +32
```
skill-name/
├── SKILL.md # This file
├── scripts/ # Optional: Executable code (e.g., extract.py)
├── references/ # Optional: Docs (e.g., REFERENCE.md)
├── assets/ # Optional: Templates, images, data
└── ... # Additional files
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add fence languages to satisfy markdownlint (Lines 25 and 63).

Both fenced code blocks are missing language identifiers (MD040).

Proposed fix
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
 ├── scripts/          # Optional: Executable code (e.g., extract.py)
 ├── references/       # Optional: Docs (e.g., REFERENCE.md)
 ├── assets/           # Optional: Templates, images, data
 └── ...               # Additional files

@@
- +bash
skills-ref validate ./my-skill

Also applies to: 63-65

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 25-25: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/skill-template/SKILL.md around lines 25 - 32, Update the two
fenced code blocks in SKILL.md to include language identifiers to satisfy
markdownlint MD040: add "text" to the directory-tree block starting with
"skill-name/" and add "bash" to the command block containing "skills-ref
validate ./my-skill"; repeat the same fix for the other fenced block at lines
~63-65 so all fenced blocks have explicit languages.

Comment on lines +14 to +15
- **Starter template:** `.steering/templates/AGENTS.md` — copy to the **repository root** as **`AGENTS.md`** and customize. It nudges agents to **use skills** (read `SKILL.md` when the task matches a skill’s `description`) and **use MCPs when appropriate** (check tool schemas, prefer fresh docs/data over guessing). Extended **Core Principles** live in `.steering/templates/agent.md` (singular) for optional embeds.
- **Not part of sync output** — This agent (`sync-agents`) does **not** copy `AGENTS.md` into `.cursor/`, `.claude/`, or `.github/`. Only `*.agent.md` files under `.steering/agents/` replicate to the three `agents/` mirrors. Treat root `AGENTS.md` as a separate, human-maintained file (optionally derived from the template once).
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Sync scope here doesn't match the current generator.

This says only *.agent.md files under .steering/agents/ are mirrored, but the repo already ships mirrored files like sync-agents.md / sync-skills.md, and the regeneration script copies every file in .steering/agents/ except README.md. Please align the canonical wording (or tighten the generator) so maintainers don't follow docs that immediately produce CI diffs.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~15-~15: The official name of this software platform is spelled with a capital “H”.
Context: ...NTS.mdinto.cursor/, .claude/, or .github/. Only *.agent.mdfiles under.stee...

(GITHUB)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/agents/sync-agents.md around lines 14 - 15, The sync documentation
(.github/agents/sync-agents.md) incorrectly states that only `*.agent.md` under
`.steering/agents/` are mirrored, while the actual generator/regeneration script
currently copies every file in `.steering/agents/` (producing mirrored files
like `sync-agents.md` / `sync-skills.md`); update the docs or the generator so
they match: either change the text in `.github/agents/sync-agents.md` to
accurately describe the generator behavior (that all files in
`.steering/agents/` except `README.md` are mirrored to the agents mirrors) or
modify the regeneration script to enforce the narrower `*.agent.md` filter;
reference the files `.github/agents/sync-agents.md`, `.steering/agents/` and the
regeneration script responsible for mirroring when making the fix.

Comment on lines +30 to +32
```
/laravel-package <vendor/package>
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add language tags to fenced command blocks (Lines 30 and 36).

Both code fences should specify a language to satisfy MD040.

Proposed fix
-```
+```text
 /laravel-package <vendor/package>

@@
- +text
/laravel-package spatie/laravel-markdown-response

Also applies to: 36-38

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 30-30: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/agentic-programming/SKILL.md around lines 30 - 32, The two
fenced command blocks showing "/laravel-package <vendor/package>" and
"/laravel-package spatie/laravel-markdown-response" lack language tags; update
those two triple-backtick fences in SKILL.md to use a language tag (e.g.,
```text) so the blocks read as fenced code with `text` specified for both
occurrences.

Keep under 500 lines (~5000 tokens). Use `references/`, `scripts/`, `assets/` for more.

# Directory Structure
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced code blocks to satisfy markdownlint.

MD040 is triggered because the fences at Line 25 and Line 63 omit a language.

Proposed lint-safe patch
-```
+```text
 skill-name/
 ├── SKILL.md          # This file
 ├── scripts/          # Optional: Executable code (e.g., extract.py)
 ├── references/       # Optional: Docs (e.g., REFERENCE.md)
 ├── assets/           # Optional: Templates, images, data
 └── ...               # Additional files

@@
- +bash
skills-ref validate ./my-skill

Also applies to: 63-63

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 25-25: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/skill-research/skill-template.md at line 25, The fenced code
blocks in SKILL.md are missing language identifiers (triggering MD040); update
the triple-backtick blocks that contain the directory tree (the block starting
with "skill-name/") and the command example ("skills-ref validate ./my-skill")
to include appropriate languages (e.g., ```text or ```bash) so markdownlint is
satisfied; locate the backtick fences in skill-template.md and add the language
tokens immediately after the opening ``` for those two blocks.

1. **Build step (Obsidian embeds)** — In each `.steering/agents/*.md` **body** (after the first YAML frontmatter), expand wiki-style embeds allowed for that **output**:
- **Default:** only embeds whose path starts with **`templates/`** (optional **`#Heading`** to inline a single `## Heading` section). Paths resolve under **`.steering/`**. Embed syntax is Obsidian’s wiki link with brackets (see steering README); do not put illustrative embed examples in agent bodies as literal bracket pairs or the CI build will try to expand them.
- **`research-skill.agent.md` only:** embeds whose path starts with **`github-copilot/`** are expanded **only** when writing **`.cursor/agents/research-skill.agent.md`** (full body after that file’s YAML frontmatter, same rules as `templates/`). For **`.github/agents/`** and **`.claude/agents/`**, replace those embeds with a short blockquote pointing at **`.steering/github-copilot/Skills.md`** so mirrors stay small and Obsidian syntax never ships to Copilot Cloud.
- With `#Heading`, include only the `## Heading` section: from that heading until the next `## `, an `---` line on its own, or an `# ` H1.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix Markdown code-span lint violation on heading marker example.

Line 23 uses a code span with trailing space (`## `), which triggers MD038 and may fail linting in strict setups.

✏️ Proposed fix
-   - With `#Heading`, include only the `## Heading` section: from that heading until the next `## `, an `---` line on its own, or an `# ` H1.
+   - With `#Heading`, include only the `## Heading` section: from that heading until the next level-2 heading (`##` + space), an `---` line on its own, or an H1 (`#` + space).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- With `#Heading`, include only the `## Heading` section: from that heading until the next `## `, an `---` line on its own, or an `# ` H1.
- With `#Heading`, include only the `## Heading` section: from that heading until the next level-2 heading (`##` + space), an `---` line on its own, or an H1 (`#` + space).
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 23-23: Spaces inside code span elements

(MD038, no-space-in-code)


[warning] 23-23: Spaces inside code span elements

(MD038, no-space-in-code)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/agents/sync-agents.md at line 23, The example heading marker uses
a code span with a trailing space (`` `## ` ``) which triggers MD038; update the
example to use a code span without the trailing space (`` `##` ``) or rephrase
the sentence to avoid a code span containing trailing whitespace, e.g. change
the text that mentions "`## Heading` section: from that heading until the next
`## `, an `---` line..." to reference "`##`" (no space) so the lint rule is
satisfied; ensure occurrences in the same paragraph referencing the heading
marker are updated consistently (look for the strings "`## `", "`## Heading`",
and the surrounding sentence).

- [Copilot Plans](https://github.com/features/copilot/plans)

## Related Notes
[[Github Copilot]]
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix product-name casing in wiki link label (Line 61).

[[Github Copilot]] should use official casing: [[GitHub Copilot]].

Proposed fix
-[[Github Copilot]]
+[[GitHub Copilot]]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[[Github Copilot]]
[[GitHub Copilot]]
🧰 Tools
🪛 LanguageTool

[uncategorized] ~61-~61: The official name of this software platform is spelled with a capital “H”.
Context: ...ures/copilot/plans) ## Related Notes [[Github Copilot]]

(GITHUB)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Memories.md at line 61, Update the wiki link label
string '[[Github Copilot]]' to use the official product casing '[[GitHub
Copilot]]' so the link label matches branding; locate the occurrence of the
exact token '[[Github Copilot]]' in Memories.md and replace it with '[[GitHub
Copilot]]'.

| `argument-hint` | No | Hint text in the chat input for arguments. |
| `agent` | No | `ask`, `agent`, `plan`, or a **custom agent** name. Default: current chat agent. If **`tools`** is set, default agent is typically **`agent`**. |
| `model` | No | Model for this run; default: chat model picker. |
| `tools` | No | Allowed tools (built-in, tool sets, MCP, extension tools). MCP server wildcard: pattern like `server /*` (see [agent tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools)). Unavailable tools are **ignored**. |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

In VS Code Copilot prompt files frontmatter, what is the exact wildcard syntax for MCP tools/server patterns in the toolsfield? Isserver/valid and isserver / invalid?

💡 Result:

The wildcard pattern for “all tools from an MCP server” in a VS Code .prompt.md frontmatter tools list is exactly:

  • <server name>/* (no spaces) [1]

So:

  • server/* is valid (assuming server matches the MCP server name) [1]
  • server /* is not valid as a wildcard pattern, because it’s a different string than <server name>/* (it includes a space) [1]

Sources

[1] VS Code Docs — “Use prompt files in VS Code” (frontmatter tools field; MCP wildcard format) (code.visualstudio.com)

Citations:


Remove space in MCP wildcard pattern example.

Line 64 contains server /* with a space, which is invalid syntax. VS Code Copilot documentation specifies the wildcard pattern must be server/* (no space) to match all tools from an MCP server.

Fix
-| `tools` | No | Allowed tools (built-in, tool sets, MCP, extension tools). MCP server wildcard: pattern like `server /*` (see [agent tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools)). Unavailable tools are **ignored**. |
+| `tools` | No | Allowed tools (built-in, tool sets, MCP, extension tools). MCP server wildcard: pattern like `server/*` (see [agent tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools)). Unavailable tools are **ignored**. |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `tools` | No | Allowed tools (built-in, tool sets, MCP, extension tools). MCP server wildcard: pattern like `server /*` (see [agent tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools)). Unavailable tools are **ignored**. |
| `tools` | No | Allowed tools (built-in, tool sets, MCP, extension tools). MCP server wildcard: pattern like `server/*` (see [agent tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools)). Unavailable tools are **ignored**. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/github-copilot/Prompts.md at line 64, Update the MCP wildcard
example in the `tools` table by removing the space in the pattern: replace the
invalid `server /*` token with the correct `server/*` token so the example
matches VS Code Copilot syntax and will correctly match all tools from an MCP
server; ensure the surrounding table cell text remains otherwise unchanged.

product_url: https://deepwiki.com
mcp_url: https://mcp.deepwiki.com/
type: official
transport: both
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

For DeepWiki MCP and MCP transport naming, what are the current protocol terms used in official docs (e.g., Streamable HTTP, SSE, stdio), and is "both" a standard transport label?

💡 Result:

Official MCP transport terms (current docs/spec):

DeepWiki naming you’ll commonly see (matches the above concepts):

  • Stdio Transport”, “SSE Transport”, and “HTTP Streamable Transport / Streamable HTTP Transport”. (deepwiki.com)

Is "both" a standard transport label?

  • No. In the official registry/schema guidance, the transport type is set to either "streamable-http" or "sse" (and stdio exists as its own type). If a server supports both HTTP transports, it’s described as supporting both at different URLs, not by using a "both" label. (modelcontextprotocol.io)

Citations:


🏁 Script executed:

cat -n .steering/mcps/deepwiki__mcp.md | head -80

Repository: ChrisThompsonTLDR/agentic-programming

Length of output: 3328


Replace non-standard transport: both label with official MCP transport term.

Line 8 uses transport: both, which is not a valid label in the MCP specification. The official transport types are stdio, streamable-http, or sse.

The documentation (lines 36, 73–74) clearly describes two separate endpoints:

  • Streamable HTTP (recommended): https://mcp.deepwiki.com/mcp
  • SSE (legacy/deprecated): https://mcp.deepwiki.com/sse

Since Streamable HTTP is the primary and recommended transport, update line 8 to transport: streamable-http. If both transports must be represented in metadata, document them as separate entries with their respective URLs, aligned with official MCP registry patterns.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/mcps/deepwiki__mcp.md at line 8, Replace the non-standard MCP
label "transport: both" with the official transport term "transport:
streamable-http" in the metadata entry (update the line that currently reads
transport: both), and if you must advertise both endpoints add two separate
entries instead of "both" — e.g., one metadata line for "transport:
streamable-http" with URL https://mcp.deepwiki.com/mcp and a separate metadata
line for "transport: sse" with URL https://mcp.deepwiki.com/sse; ensure you only
use the official MCP transport labels (stdio, streamable-http, sse) and remove
the "both" value.

Comment on lines +172 to +180
### Component-scoped interceptors

```blade
<script>
this.$intercept('save', ({ component, onSuccess }) => {
onSuccess(() => console.log('Saved!'));
});
</script>
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

In Livewire 4, what is the correct syntax for component-scoped action interceptors: this.$intercept or $wire.intercept?

💡 Result:

In Livewire 4, component-scoped action interceptors use:

  • $wire.intercept(callback) (or $wire.intercept('save', callback) to target a specific action) — not this.$intercept.
    For global interceptors across all components, use Livewire.interceptAction(callback). [1]

Fix component-scoped interceptor syntax at line 176.

Line 176 uses this.$intercept('save', ...), but Livewire 4 requires $wire.intercept('save', ...) for component-scoped action interceptors. Update the example to use the correct $wire syntax to match line 138 and Livewire 4 specifications.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.steering/skills/livewire-development/SKILL.md around lines 172 - 180,
Update the component-scoped interceptor example to use the Livewire 4 syntax:
replace the incorrect this.$intercept('save', ...) usage with
$wire.intercept('save', ...) in the "Component-scoped interceptors" example so
it matches the $wire.intercept pattern used elsewhere and conforms to Livewire
4; ensure the example script references $wire.intercept rather than
this.$intercept.

Comment on lines +65 to +85
def extract_section(text: str, heading: str) -> str:
lines = text.splitlines()
target = "## " + heading.strip()
start = None
for i, line in enumerate(lines):
if line.strip() == target:
start = i
break
if start is None:
return "<!-- missing section: " + heading.strip() + " -->\n"
out = []
for line in lines[start + 1 :]:
st = line.strip()
if st == "---":
break
if line.startswith("## "):
break
if line.startswith("# ") and not line.startswith("##"):
break
out.append(line)
return "\n".join(out).rstrip() + "\n"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Keep the heading line when expanding #Heading embeds.

extract_section() starts copying at lines[start + 1], so every heading-scoped embed drops the matched ## Heading line itself. That strips context from the generated mirrors and contradicts the documented “from that heading …” behavior.

[suggested fix]

Proposed patch
 def extract_section(text: str, heading: str) -> str:
     lines = text.splitlines()
     target = "## " + heading.strip()
     start = None
@@
-    out = []
-    for line in lines[start + 1 :]:
+    out = [lines[start]]
+    for line in lines[start + 1 :]:
         st = line.strip()
         if st == "---":
             break
         if line.startswith("## "):
             break
         if line.startswith("# ") and not line.startswith("##"):
             break
         out.append(line)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
def extract_section(text: str, heading: str) -> str:
lines = text.splitlines()
target = "## " + heading.strip()
start = None
for i, line in enumerate(lines):
if line.strip() == target:
start = i
break
if start is None:
return "<!-- missing section: " + heading.strip() + " -->\n"
out = []
for line in lines[start + 1 :]:
st = line.strip()
if st == "---":
break
if line.startswith("## "):
break
if line.startswith("# ") and not line.startswith("##"):
break
out.append(line)
return "\n".join(out).rstrip() + "\n"
def extract_section(text: str, heading: str) -> str:
lines = text.splitlines()
target = "## " + heading.strip()
start = None
for i, line in enumerate(lines):
if line.strip() == target:
start = i
break
if start is None:
return "<!-- missing section: " + heading.strip() + " -->\n"
out = [lines[start]]
for line in lines[start + 1 :]:
st = line.strip()
if st == "---":
break
if line.startswith("## "):
break
if line.startswith("# ") and not line.startswith("##"):
break
out.append(line)
return "\n".join(out).rstrip() + "\n"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/regenerate-ide-mirrors.py` around lines 65 - 85, The extract_section
function currently omits the matched heading because it begins iterating at
lines[start + 1]; update extract_section so it includes the heading line (the
line matching target) in the output before collecting subsequent lines and still
stops on the same delimiters (---, other "## " headings, or top-level "# ").
Locate the target/ start detection logic in extract_section and change the
iteration or initial out append so the matched "## " + heading line is preserved
while keeping the existing break conditions intact.

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.

3 participants