Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
8fb3c05
Commit the client-website-discovery-assistant-agent to the `ai-ops/ne…
ashleyshaw Jul 14, 2026
592e500
Commit the prd-agent to the feat/new-agents branch
ashleyshaw Jul 14, 2026
db83a05
Commit the `tour-operator-config-agent` to the `feat/new-agents` branch
ashleyshaw Jul 14, 2026
a3cf542
Commit the wp-config-agent to the feat/new-agents branch
ashleyshaw Jul 14, 2026
5b53f02
feat(agents): add design-partner-agent to agents directory
ashleyshaw Jul 15, 2026
71b03ca
feat(agents): add WooCommerce configuration agent export
ashleyshaw Jul 15, 2026
00a8043
feat(agents): add Linear Advisor agent export
ashleyshaw Jul 15, 2026
1bf9030
feat(agents): add playwright-testing-agent export
ashleyshaw Jul 15, 2026
391e7b9
feat(agents): add Harvest Analytical agent export
ashleyshaw Jul 15, 2026
1d60e01
Merge branch 'feat/new-agents' into ashleyshaw-feat-agents-prd-factor…
ashleyshaw Jul 15, 2026
2242024
feat(agents): add PRD Factory & Planner agent export
ashleyshaw Jul 15, 2026
3399b21
feat(agents): add pagespeed-agent export
ashleyshaw Jul 15, 2026
13e2670
feat: add Zendesk support agent
ashleyshaw Jul 15, 2026
4274970
feat(agents): add Website Scope Estimator agent export
ashleyshaw Jul 15, 2026
fbc8ee2
feat: add website-content-strategist agent
ashleyshaw Jul 15, 2026
33facf6
Merge website-content-strategist agent into feat/new-agents
ashleyshaw Jul 15, 2026
765fa29
feat: add AI readiness estimator agent
ashleyshaw Jul 15, 2026
519fc53
Merge branch 'ashleyshaw-feat-add-ai-readiness-estimator-agent' into …
ashleyshaw Jul 15, 2026
a04823c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
d560176
Apply suggestion from @gemini-code-assist[bot]
ashleyshaw Jul 15, 2026
24a8ef2
Potential fix for pull request finding 'Syntax error'
ashleyshaw Jul 15, 2026
ddc916c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
1927054
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
71bce3e
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
bdac9f3
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
5a74d2b
Potential fix for pull request finding 'File is not always closed'
ashleyshaw Jul 15, 2026
839d964
Potential fix for pull request finding 'File is not always closed'
ashleyshaw Jul 15, 2026
7dad45c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
bff625c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
291ee9b
fix(ci): consolidate auto-merge logic to Mergify only
ashleyshaw Jul 15, 2026
574ca01
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
fba0226
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
228a512
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
2308e35
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
6cb5890
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
1f23377
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
63546bc
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
40df27b
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
7a145c0
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
85b3fd5
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
1d7d988
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
adf2a85
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
cc0e71c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
f92d9f2
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
3af7b49
Potential fix for pull request finding 'Redundant comparison'
ashleyshaw Jul 15, 2026
b1b965e
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
9df933d
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
ff8a780
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
cb2468c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
84733f5
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
4b16015
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
f68d7b2
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
9ba1db5
fix(ci): unblock all CI checks on this PR (dependency conflict, scrip…
ashleyshaw Jul 15, 2026
b46327f
fix: revert unintended reformatting of vendored skill files
ashleyshaw Jul 15, 2026
cdc06eb
fix: filter vendored/test-fixture paths in the JS/TS lint-staged task…
ashleyshaw Jul 15, 2026
65c052b
Merge remote-tracking branch 'origin/feat/new-agents' into feat/new-a…
ashleyshaw Jul 15, 2026
4cb3b05
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
9b1d9bc
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
4de9262
Merge remote-tracking branch 'origin/feat/new-agents' into feat/new-a…
ashleyshaw Jul 15, 2026
d48ff13
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
f055cbd
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
0e0deb7
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
4649fa9
fix(ci): add required footers to new agent docs; exclude vendor conte…
ashleyshaw Jul 15, 2026
139dd31
Merge remote-tracking branch 'origin/feat/new-agents' into feat/new-a…
ashleyshaw Jul 15, 2026
af54f1c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
322d416
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
6985700
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
022e91e
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
7af566f
fix(ci): remaining mermaid a11y/contrast, changelog freshness, and E2…
ashleyshaw Jul 15, 2026
e9d43a8
Merge remote-tracking branch 'origin/feat/new-agents' into feat/new-a…
ashleyshaw Jul 15, 2026
d7c2c5a
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
adb8db5
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
203332a
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
d5f7d44
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
b3ee264
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
565849d
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
8b2515b
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
265eadb
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
125af0f
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
5aa065c
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
a3dfd4e
fix(ci): resolve E2BIG crashes in link-checking and colour-contrast s…
ashleyshaw Jul 15, 2026
12c5294
Merge remote-tracking branch 'origin/feat/new-agents' into feat/new-a…
ashleyshaw Jul 15, 2026
1675382
fix(ci): fix broken links surfaced by lint-and-links now that it actu…
ashleyshaw Jul 15, 2026
46cde03
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
05d70da
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
d3e7ec5
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
c3b6b31
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
450ab63
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
6201de7
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
e56baef
fix(ci): remove unsupported strict options from Mergify merge actions
ashleyshaw Jul 15, 2026
c39f9f0
fix(ci): remove invalid rebase_fallback option from Mergify update ac…
ashleyshaw Jul 15, 2026
20e89dc
Merge branch 'develop' into feat/new-agents
ashleyshaw Jul 15, 2026
6f2cded
fix(ci): exclude semver.org/keepachangelog.com from link checking
ashleyshaw Jul 15, 2026
e7fba3b
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
69d7cc3
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
a49be38
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
5f871d2
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
30018ba
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
fcceb66
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
62dd435
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
0abcee5
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
c7cc576
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
e140172
Potential fix for pull request finding 'Unused variable, import, func…
ashleyshaw Jul 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
36 changes: 14 additions & 22 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pull_request_rules:
# Keep Dependabot PRs up-to-date by rebasing if develop has moved ahead
- name: Keep Dependabot dependency updates on develop current
conditions:
- author~=^(dependabot\[bot\]|app/dependabot)$
Expand All @@ -8,7 +9,9 @@ pull_request_rules:
- -conflict
- "#commits-behind > 0"
actions:
update:
update: {}

# Auto-approve and merge Dependabot dependency updates when CI passes
- name: Auto-approve and merge Dependabot dependency updates on develop
conditions:
- author~=^(dependabot\[bot\]|app/dependabot)$
Expand All @@ -20,21 +23,25 @@ pull_request_rules:
actions:
review:
type: APPROVE
queue:
name: dependabot
merge:
method: squash

# Keep imgbot image optimizations up-to-date by rebasing if develop has moved ahead
- name: Keep imgbot image optimizations current on develop
conditions:
# ImgBot has used both identities here, so keep both to avoid breaking auto-merge.
# ImgBot has used both identities here, so keep both to avoid breaking auto-merge
- author~=^(imgbot\[bot\]|app/imgbot)$
- base=develop
- -draft
- -conflict
- "#commits-behind > 0"
actions:
update:
update: {}

# Auto-merge imgbot image optimizations when CI passes
- name: Auto-merge imgbot image optimizations on develop
conditions:
# ImgBot has used both identities here, so keep both to avoid breaking auto-merge.
# ImgBot has used both identities here, so keep both to avoid breaking auto-merge
- author~=^(imgbot\[bot\]|app/imgbot)$
- base=develop
- check-success=All Checks Passed
Expand All @@ -43,22 +50,7 @@ pull_request_rules:
actions:
merge:
method: squash
queue_rules:
- name: dependabot
queue_conditions:
- author~=^(dependabot\[bot\]|app/dependabot)$
- base=develop
- label=area:dependencies
- -draft
- -conflict
merge_conditions:
- check-success=All Checks Passed
merge_method: squash
batch_size: 1
- name: Merge queue
batch_size: 1
merge_queue:
max_parallel_checks: 3

merge_protections_settings:
reporting_method: check-runs
auto_merge_conditions: true
13 changes: 13 additions & 0 deletions .github/scripts/validate-footers.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,19 @@ function replaceFooterTail(content, footerTemplate) {
return `${contentWithoutTail}${footerBlock}`;
}

// Bundled/vendored skill reference material (third-party snapshots embedded
// in agent skill folders, not repo-authored) is exempt from footer
// requirements — mirrors the exclusions in eslint.config.cjs and
// scripts/validation/validate-mermaid-syntax.js.
const VENDOR_PATH_PATTERN =
/\/(plugin-provided|platform-managed|directory-installed|agentskills-main)\//;

function inferCategory(filePath, frontmatter) {
const normalizedForVendorCheck = filePath.replace(/\\/g, "/");
if (VENDOR_PATH_PATTERN.test(normalizedForVendorCheck)) {
return "";
}

if (
frontmatter?.category &&
footerConfig.categories?.[frontmatter.category]
Expand Down Expand Up @@ -267,6 +279,7 @@ function getChangedMarkdownFiles() {
try {
const output = execSync(`git diff --name-only ${diffRange} -- '*.md'`, {
encoding: "utf8",
maxBuffer: 1024 * 1024 * 100,
}).trim();

return output ? output.split("\n").filter(Boolean) : [];
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/changelog-validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ jobs:
const baseSha = context.payload.pull_request?.base?.sha;
const headSha = context.payload.pull_request?.head?.sha;
const changed = cp
.execSync(`git diff --name-only ${baseSha} ${headSha}`, { encoding: "utf8" })
.execSync(`git diff --name-only ${baseSha} ${headSha}`, {
encoding: "utf8",
maxBuffer: 1024 * 1024 * 100,
})
.split("\n")
.filter(Boolean);
if (changed.includes("CHANGELOG.md")) {
Expand Down
77 changes: 0 additions & 77 deletions .github/workflows/dependabot-automerge.yml

This file was deleted.

29 changes: 25 additions & 4 deletions .github/workflows/meta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,18 +90,26 @@ jobs:
fi

# Get changed markdown files, excluding files with deferred formatting
# and bundled/vendored skill reference material (not repo-authored)
FILES=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" -- '*.md' '*.mdx' | \
sed '/^AWESOME_GITHUB_MAPPING_STRATEGY\.md$/d' | \
sed '/^docs\/MIGRATION\.md$/d' | \
sed '/^\.github\/reports\//d' | \
tr '\n' ' ')
sed '/\/plugin-provided\//d' | \
sed '/\/platform-managed\//d' | \
sed '/\/directory-installed\//d' | \
sed '/\/tests\/markdown-issues\.md$/d' | \
sed '/\/agentskills-main\//d')

if [ -z "$FILES" ]; then
echo "No Markdown files to lint (all changed files are in ignore list)."
exit 0
fi

npx markdownlint-cli2 $FILES
# Pipe through xargs (rather than unquoted word-splitting) so very
# large changed-file counts are chunked instead of overflowing the
# shell's argument-list limit (E2BIG).
echo "$FILES" | xargs -r npx markdownlint-cli2

- name: Collect Link Targets
id: link_targets
Expand All @@ -127,22 +135,35 @@ jobs:
fi

LINK_FILES=""
LINK_FILE_COUNT=0
# Cap the file count passed to lychee-action's `args:` input — that
# string is substituted into an environment variable at process
# start, so an unbounded count can exceed the runner's
# argv/environment size limit (E2BIG) on exceptionally large PRs.
MAX_LINK_FILES=300
while IFS= read -r file; do
[ -z "$file" ] && continue
if grep -Eq 'https?://|www\.|mailto:|^\[[^]]+\]:\s*https?://' "$file"; then
LINK_FILES="${LINK_FILES}${file} "
LINK_FILE_COUNT=$((LINK_FILE_COUNT + 1))
if [ "$LINK_FILE_COUNT" -le "$MAX_LINK_FILES" ]; then
LINK_FILES="${LINK_FILES}${file} "
fi
fi
done <<EOF
$CHANGED_FILES
EOF

if [ "$LINK_FILE_COUNT" -gt "$MAX_LINK_FILES" ]; then
echo "::warning::Changed files with URLs ($LINK_FILE_COUNT) exceed the $MAX_LINK_FILES-file link-check cap; only the first $MAX_LINK_FILES were checked. Remaining $((LINK_FILE_COUNT - MAX_LINK_FILES)) file(s) were not link-checked."
fi

echo "files=${LINK_FILES}" >> "$GITHUB_OUTPUT"

- name: Check Links
if: steps.link_targets.outputs.files != ''
uses: lycheeverse/lychee-action@v2
with:
args: --no-progress --verbose ${{ steps.link_targets.outputs.files }}
args: --no-progress --verbose --config lychee.toml ${{ steps.link_targets.outputs.files }}

apply-meta:
if: ${{ github.event_name != 'pull_request' }}
Expand Down
15 changes: 10 additions & 5 deletions .github/workflows/validate-mermaid-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,17 @@ jobs:
- name: Validate colour contrast (WCAG 2.2 AA)
id: contrast
if: steps.has_diagrams.outputs.result == 'true'
env:
CHANGED_FILES: ${{ steps.changed.outputs.files }}
run: |
CHANGED="$CHANGED_FILES"
CHANGED_CSV=$(echo "$CHANGED" | tr '\n' ',' | sed 's/,$//')
node scripts/validation/validate-mermaid-colour-contrast.js --changed-files="$CHANGED_CSV"
# Write the changed-file list to disk rather than an env var or CLI
# arg — with this many changed files, either would exceed the
# runner's argv/environment size limit (E2BIG) before the process
# even starts. ${{ }} is substituted directly into this script's
# body at compile time, not passed through process creation, so it
# isn't subject to that limit here.
cat > "$RUNNER_TEMP/changed-md-files.txt" << 'CHANGED_FILES_EOF'
${{ steps.changed.outputs.files }}
CHANGED_FILES_EOF
node scripts/validation/validate-mermaid-colour-contrast.js --changed-files-list="$RUNNER_TEMP/changed-md-files.txt"
continue-on-error: true

- name: Collect results
Expand Down
45 changes: 45 additions & 0 deletions .lintstagedrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* Dedicated lint-staged configuration (takes precedence over package.json's
* "lint-staged" field).
*
* All tasks filter out bundled/vendored skill reference material and
* intentionally-invalid test fixtures before invoking eslint/markdownlint,
* since those tools do not honour ignore globs against explicitly passed
* file paths (only against their own glob expansion). This mirrors the
* exclusions already applied in eslint.config.cjs, package.json's `lint:md`
* script, and .github/workflows/meta.yml's `lint-and-links` job.
*/
const EXCLUDED_PATTERNS = [
/\/plugin-provided\//,
/\/platform-managed\//,
/\/directory-installed\//,
/\/tests\/markdown-issues\.md$/,
/\/agentskills-main\//,
];

function isExcluded(filename) {
return EXCLUDED_PATTERNS.some((pattern) => pattern.test(filename));
}

function quoteAll(filenames) {
return filenames.map((f) => `"${f}"`).join(" ");
}

module.exports = {
"*.{js,jsx,ts,tsx}": (filenames) => {
const included = filenames.filter((f) => !isExcluded(f));
if (!included.length) return [];
return [
`eslint --fix ${quoteAll(included)}`,
`prettier --write ${quoteAll(included)}`,
];
},
"*.{md,mdx}": (filenames) => {
const included = filenames.filter((f) => !isExcluded(f));
return included.length
? [`markdownlint-cli2 --fix ${quoteAll(included)}`]
: [];
},
"*.json": ["prettier --write"],
"*.{yml,yaml}": ["prettier --write"],
};
28 changes: 0 additions & 28 deletions .lycheeignore

This file was deleted.

Loading
Loading