diff --git a/.agents/skills/competitive-landscape/SKILL.md b/.agents/skills/competitive-landscape/SKILL.md index 7c0c1f62b..c64193c9a 100644 --- a/.agents/skills/competitive-landscape/SKILL.md +++ b/.agents/skills/competitive-landscape/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the market read in it — the saved competitors are the starting roster, and the business and positioning decide who counts as a competitor. 2. This skill needs competitors. If none are saved, run a minimal inline setup: ask the user who they compete with, or infer a shortlist from `find_serp_competitors` and the site and confirm it, write it back with `update_project_context` (`addCompetitors`), then continue the landscape work. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — every confirmed competitor via `addCompetitors` with a short note on why they matter, plus `removeCompetitors` for entries you added that turned out irrelevant (leave rows the user added alone) — and append a research log entry: `{ appendResearchLog: { summary: "Competitive landscape: . Verdict: " } }`. +4. On finish, write back what is durable with `update_project_context` — every confirmed competitor via `addCompetitors` with a short note on why they matter, plus `removeCompetitors` for entries you added that turned out irrelevant (leave rows the user added alone) — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Competitive landscape: . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/competitor-analysis/SKILL.md b/.agents/skills/competitor-analysis/SKILL.md index 1b2f79192..059dca015 100644 --- a/.agents/skills/competitor-analysis/SKILL.md +++ b/.agents/skills/competitor-analysis/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the analysis in it — the saved competitors say whether this domain is already known and what was concluded about it before. 2. This skill needs competitors. If none are saved, run a minimal inline setup: save the competitor being analyzed, and ask the user (or infer from `find_serp_competitors` and confirm) whether there are others, write them back with `update_project_context` (`addCompetitors`), then continue the analysis. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — an `addCompetitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append a research log entry: `{ appendResearchLog: { summary: "Competitor analysis: . Verdict: " } }`. +4. On finish, write back what is durable with `update_project_context` — an `addCompetitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Competitor analysis: . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/keyword-clustering/SKILL.md b/.agents/skills/keyword-clustering/SKILL.md index abd6ed185..f21356f95 100644 --- a/.agents/skills/keyword-clustering/SKILL.md +++ b/.agents/skills/keyword-clustering/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the mapping in it — the saved key pages are the existing pages clusters should map to, and the business and goal decide which clusters are worth targeting. 2. This skill needs key pages. If none are saved, run a minimal inline setup: ask the user for the pages that matter, or propose a shortlist from the site, an audit, or Search Console and confirm it, write it back with `update_project_context` (`addKeyPages`), then continue the clustering. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — new or corrected `addKeyPages` entries with the topic each page now targets — and append a research log entry: `{ appendResearchLog: { summary: "Keyword clustering: . Verdict: " } }`. +4. On finish, write back what is durable with `update_project_context` — new or corrected `addKeyPages` entries with the topic each page now targets — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Keyword clustering: . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/keyword-research/SKILL.md b/.agents/skills/keyword-research/SKILL.md index ba553510d..2b3479cd1 100644 --- a/.agents/skills/keyword-research/SKILL.md +++ b/.agents/skills/keyword-research/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the research in it — the business, the goal, the markets, and the competitors and key pages already saved. 2. This skill needs `business_overview` and `current_goal`. If either is empty, run a minimal inline setup: ask the user, or infer from the site and confirm, just enough to fill them, write them back with `update_project_context`, then continue the research. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — a sharpened `business_overview` or `current_goal`, competitors that kept appearing in the SERPs via `addCompetitors`, pages the keywords should land on via `addKeyPages` — and append a research log entry: `{ appendResearchLog: { summary: "Keyword research: . Verdict: " } }`. +4. On finish, write back what is durable — a sharpened `business_overview` or `current_goal`, competitors that kept appearing in the SERPs via `addCompetitors`, pages the keywords should land on via `addKeyPages` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Keyword research: . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/link-prospecting/SKILL.md b/.agents/skills/link-prospecting/SKILL.md index eb676eae1..600c65830 100644 --- a/.agents/skills/link-prospecting/SKILL.md +++ b/.agents/skills/link-prospecting/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the outreach in it — positioning supplies the claim that makes a link worth giving, and the saved competitors are the backlink profiles to mine. 2. This skill needs `positioning` and competitors. If either is empty, run a minimal inline setup: ask the user why someone would cite them and who they compete with, or infer from the site and `find_serp_competitors` and confirm, write it back with `update_project_context`, then continue the prospecting. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — the linkable asset via `addKeyPages`, any competitor whose backlink profile proved useful via `addCompetitors` — and append a research log entry: `{ appendResearchLog: { summary: "Link prospecting: . Verdict: " } }`. +4. On finish, write back what is durable — the linkable asset via `addKeyPages`, any competitor whose backlink profile proved useful via `addCompetitors` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Link prospecting: . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/local-seo/SKILL.md b/.agents/skills/local-seo/SKILL.md index 5794061cb..68393d1e3 100644 --- a/.agents/skills/local-seo/SKILL.md +++ b/.agents/skills/local-seo/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the work in it — what the business does and where it operates decides which keywords and radius matter. 2. This skill needs `business_overview`. If it is empty, run a minimal inline setup: infer what the business does and its location from the site and confirm it with the user in one question, write it back with `update_project_context`, then continue. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — local competitors that have a website via `addCompetitors` (competitor rows are keyed by domain, so skip listings without one), a corrected `business_overview` — and append a research log entry: `{ appendResearchLog: { summary: "Local SEO: near . Verdict: " } }`. +4. On finish, write back what is durable with `update_project_context` — local competitors that have a website via `addCompetitors` (competitor rows are keyed by domain, so skip listings without one), a corrected `business_overview` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Local SEO: near . Verdict: " } }] }`. ## Deliver as a report diff --git a/.agents/skills/seo-audit/SKILL.md b/.agents/skills/seo-audit/SKILL.md index eb1cb0e43..bb4223ebc 100644 --- a/.agents/skills/seo-audit/SKILL.md +++ b/.agents/skills/seo-audit/SKILL.md @@ -16,7 +16,7 @@ Use this when asked for an SEO audit or review of a domain, especially for a sha - Domain to audit and `projectId` (`list_projects`; if no project matches, `create_project`). - Call `get_project_context` first. This skill needs `business_overview`. If it is empty, infer what the business does from the site, confirm it with the user in one question, write it back with `update_project_context`, and continue. Suggest `seo-project-setup` at the end for the rest; never front-load the full interview. - Reuse research-log results under 30 days old for discovery. A ranking claim that drives a recommendation still needs a live check made during this audit. -- On finish, write back what is durable with `update_project_context` (a corrected `business_overview`, the pages the report names via `addKeyPages`) and append `{ appendResearchLog: { summary: "Site audit: . Verdict: " } }`. +- On finish, write back what is durable with `update_project_context` (a corrected `business_overview`, the pages the report names via `addKeyPages`) and append `{ updates: [{ appendResearchLog: { summary: "Site audit: . Verdict: " } }] }`. Deliver through the `seo-report` skill, saving with `skill: "seo-audit"`. If that skill is unavailable, say so and stop before writing HTML. diff --git a/.agents/skills/seo-coach/SKILL.md b/.agents/skills/seo-coach/SKILL.md index 1ea5f6984..099f8df96 100644 --- a/.agents/skills/seo-coach/SKILL.md +++ b/.agents/skills/seo-coach/SKILL.md @@ -43,7 +43,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first (resolve the project with `list_projects` if needed) and ground the coaching in it — the business, goal, positioning, competitors, and key pages tell you what the user actually needs next. 2. This skill requires no section. Read whatever is there, and let the `missingSections` list shape the recommendation: empty context usually means the next step is `seo-project-setup`. Never front-load the full interview. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — anything the user tells you about the business, goal, or positioning, via `update_project_context` — and append a research log entry when a session spends credits: `{ appendResearchLog: { summary: ": . Verdict: " } }`. +4. On finish, write back what is durable — anything the user tells you about the business, goal, or positioning, via `update_project_context` — and append a research log entry when a session spends credits: `{ updates: [{ appendResearchLog: { summary: ": . Verdict: " } }] }`. ## First response diff --git a/.agents/skills/seo-report/SKILL.md b/.agents/skills/seo-report/SKILL.md index a624ca2df..cb14a8229 100644 --- a/.agents/skills/seo-report/SKILL.md +++ b/.agents/skills/seo-report/SKILL.md @@ -67,7 +67,7 @@ These are enforced by the viewer, not by taste. A report that breaks them render ## After you save - `save_report` returns `{ reportId, url, htmlBytes }`. The whole reply is at most three short bullets, then the link last on its own line as `Read the full report: `. The bullets: the verdict, the leading recommendation and expected benefit if supported, and anything the user has to act on (a project you created, a question you need answered). Nothing else: no account of the run, no reviewer notes, no list of what worked, no restating the report. The report is how they learn; chat only points at it. -- The skill you are running appends its own research-log line; add one only if it does not: `{ appendResearchLog: { summary: "Report: . Verdict: <conclusion>" } }`. +- The skill you are running appends its own research-log line; add one only if it does not: `{ updates: [{ appendResearchLog: { summary: "Report: <title>. Verdict: <conclusion>" } }] }`. - If the save fails, the error names the limit and the value. Fix that one thing and save again. Never paste the report into chat instead. ## Starter template diff --git a/plugins/openseo/skills/competitive-landscape/SKILL.md b/plugins/openseo/skills/competitive-landscape/SKILL.md index 7c0c1f62b..c64193c9a 100644 --- a/plugins/openseo/skills/competitive-landscape/SKILL.md +++ b/plugins/openseo/skills/competitive-landscape/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the market read in it — the saved competitors are the starting roster, and the business and positioning decide who counts as a competitor. 2. This skill needs competitors. If none are saved, run a minimal inline setup: ask the user who they compete with, or infer a shortlist from `find_serp_competitors` and the site and confirm it, write it back with `update_project_context` (`addCompetitors`), then continue the landscape work. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — every confirmed competitor via `addCompetitors` with a short note on why they matter, plus `removeCompetitors` for entries you added that turned out irrelevant (leave rows the user added alone) — and append a research log entry: `{ appendResearchLog: { summary: "Competitive landscape: <market/query set>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable with `update_project_context` — every confirmed competitor via `addCompetitors` with a short note on why they matter, plus `removeCompetitors` for entries you added that turned out irrelevant (leave rows the user added alone) — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Competitive landscape: <market/query set>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/competitor-analysis/SKILL.md b/plugins/openseo/skills/competitor-analysis/SKILL.md index 1b2f79192..059dca015 100644 --- a/plugins/openseo/skills/competitor-analysis/SKILL.md +++ b/plugins/openseo/skills/competitor-analysis/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the analysis in it — the saved competitors say whether this domain is already known and what was concluded about it before. 2. This skill needs competitors. If none are saved, run a minimal inline setup: save the competitor being analyzed, and ask the user (or infer from `find_serp_competitors` and confirm) whether there are others, write them back with `update_project_context` (`addCompetitors`), then continue the analysis. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — an `addCompetitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append a research log entry: `{ appendResearchLog: { summary: "Competitor analysis: <domain>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable with `update_project_context` — an `addCompetitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Competitor analysis: <domain>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/keyword-clustering/SKILL.md b/plugins/openseo/skills/keyword-clustering/SKILL.md index abd6ed185..f21356f95 100644 --- a/plugins/openseo/skills/keyword-clustering/SKILL.md +++ b/plugins/openseo/skills/keyword-clustering/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the mapping in it — the saved key pages are the existing pages clusters should map to, and the business and goal decide which clusters are worth targeting. 2. This skill needs key pages. If none are saved, run a minimal inline setup: ask the user for the pages that matter, or propose a shortlist from the site, an audit, or Search Console and confirm it, write it back with `update_project_context` (`addKeyPages`), then continue the clustering. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — new or corrected `addKeyPages` entries with the topic each page now targets — and append a research log entry: `{ appendResearchLog: { summary: "Keyword clustering: <keyword set>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable with `update_project_context` — new or corrected `addKeyPages` entries with the topic each page now targets — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Keyword clustering: <keyword set>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/keyword-research/SKILL.md b/plugins/openseo/skills/keyword-research/SKILL.md index ba553510d..2b3479cd1 100644 --- a/plugins/openseo/skills/keyword-research/SKILL.md +++ b/plugins/openseo/skills/keyword-research/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the research in it — the business, the goal, the markets, and the competitors and key pages already saved. 2. This skill needs `business_overview` and `current_goal`. If either is empty, run a minimal inline setup: ask the user, or infer from the site and confirm, just enough to fill them, write them back with `update_project_context`, then continue the research. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — a sharpened `business_overview` or `current_goal`, competitors that kept appearing in the SERPs via `addCompetitors`, pages the keywords should land on via `addKeyPages` — and append a research log entry: `{ appendResearchLog: { summary: "Keyword research: <seeds/market>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable — a sharpened `business_overview` or `current_goal`, competitors that kept appearing in the SERPs via `addCompetitors`, pages the keywords should land on via `addKeyPages` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Keyword research: <seeds/market>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/link-prospecting/SKILL.md b/plugins/openseo/skills/link-prospecting/SKILL.md index eb676eae1..600c65830 100644 --- a/plugins/openseo/skills/link-prospecting/SKILL.md +++ b/plugins/openseo/skills/link-prospecting/SKILL.md @@ -24,7 +24,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the outreach in it — positioning supplies the claim that makes a link worth giving, and the saved competitors are the backlink profiles to mine. 2. This skill needs `positioning` and competitors. If either is empty, run a minimal inline setup: ask the user why someone would cite them and who they compete with, or infer from the site and `find_serp_competitors` and confirm, write it back with `update_project_context`, then continue the prospecting. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — the linkable asset via `addKeyPages`, any competitor whose backlink profile proved useful via `addCompetitors` — and append a research log entry: `{ appendResearchLog: { summary: "Link prospecting: <asset/target page>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable — the linkable asset via `addKeyPages`, any competitor whose backlink profile proved useful via `addCompetitors` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Link prospecting: <asset/target page>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/local-seo/SKILL.md b/plugins/openseo/skills/local-seo/SKILL.md index 5794061cb..68393d1e3 100644 --- a/plugins/openseo/skills/local-seo/SKILL.md +++ b/plugins/openseo/skills/local-seo/SKILL.md @@ -25,7 +25,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the work in it — what the business does and where it operates decides which keywords and radius matter. 2. This skill needs `business_overview`. If it is empty, run a minimal inline setup: infer what the business does and its location from the site and confirm it with the user in one question, write it back with `update_project_context`, then continue. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable with `update_project_context` — local competitors that have a website via `addCompetitors` (competitor rows are keyed by domain, so skip listings without one), a corrected `business_overview` — and append a research log entry: `{ appendResearchLog: { summary: "Local SEO: <business> near <area>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable with `update_project_context` — local competitors that have a website via `addCompetitors` (competitor rows are keyed by domain, so skip listings without one), a corrected `business_overview` — and append a research log entry: `{ updates: [{ appendResearchLog: { summary: "Local SEO: <business> near <area>. Verdict: <conclusion>" } }] }`. ## Deliver as a report diff --git a/plugins/openseo/skills/seo-audit/SKILL.md b/plugins/openseo/skills/seo-audit/SKILL.md index eb1cb0e43..bb4223ebc 100644 --- a/plugins/openseo/skills/seo-audit/SKILL.md +++ b/plugins/openseo/skills/seo-audit/SKILL.md @@ -16,7 +16,7 @@ Use this when asked for an SEO audit or review of a domain, especially for a sha - Domain to audit and `projectId` (`list_projects`; if no project matches, `create_project`). - Call `get_project_context` first. This skill needs `business_overview`. If it is empty, infer what the business does from the site, confirm it with the user in one question, write it back with `update_project_context`, and continue. Suggest `seo-project-setup` at the end for the rest; never front-load the full interview. - Reuse research-log results under 30 days old for discovery. A ranking claim that drives a recommendation still needs a live check made during this audit. -- On finish, write back what is durable with `update_project_context` (a corrected `business_overview`, the pages the report names via `addKeyPages`) and append `{ appendResearchLog: { summary: "Site audit: <domain>. Verdict: <conclusion>" } }`. +- On finish, write back what is durable with `update_project_context` (a corrected `business_overview`, the pages the report names via `addKeyPages`) and append `{ updates: [{ appendResearchLog: { summary: "Site audit: <domain>. Verdict: <conclusion>" } }] }`. Deliver through the `seo-report` skill, saving with `skill: "seo-audit"`. If that skill is unavailable, say so and stop before writing HTML. diff --git a/plugins/openseo/skills/seo-coach/SKILL.md b/plugins/openseo/skills/seo-coach/SKILL.md index 1ea5f6984..099f8df96 100644 --- a/plugins/openseo/skills/seo-coach/SKILL.md +++ b/plugins/openseo/skills/seo-coach/SKILL.md @@ -43,7 +43,7 @@ The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first (resolve the project with `list_projects` if needed) and ground the coaching in it — the business, goal, positioning, competitors, and key pages tell you what the user actually needs next. 2. This skill requires no section. Read whatever is there, and let the `missingSections` list shape the recommendation: empty context usually means the next step is `seo-project-setup`. Never front-load the full interview. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. -4. On finish, write back what is durable — anything the user tells you about the business, goal, or positioning, via `update_project_context` — and append a research log entry when a session spends credits: `{ appendResearchLog: { summary: "<what>: <inputs>. Verdict: <conclusion>" } }`. +4. On finish, write back what is durable — anything the user tells you about the business, goal, or positioning, via `update_project_context` — and append a research log entry when a session spends credits: `{ updates: [{ appendResearchLog: { summary: "<what>: <inputs>. Verdict: <conclusion>" } }] }`. ## First response diff --git a/plugins/openseo/skills/seo-report/SKILL.md b/plugins/openseo/skills/seo-report/SKILL.md index a624ca2df..cb14a8229 100644 --- a/plugins/openseo/skills/seo-report/SKILL.md +++ b/plugins/openseo/skills/seo-report/SKILL.md @@ -67,7 +67,7 @@ These are enforced by the viewer, not by taste. A report that breaks them render ## After you save - `save_report` returns `{ reportId, url, htmlBytes }`. The whole reply is at most three short bullets, then the link last on its own line as `Read the full report: <url>`. The bullets: the verdict, the leading recommendation and expected benefit if supported, and anything the user has to act on (a project you created, a question you need answered). Nothing else: no account of the run, no reviewer notes, no list of what worked, no restating the report. The report is how they learn; chat only points at it. -- The skill you are running appends its own research-log line; add one only if it does not: `{ appendResearchLog: { summary: "Report: <title>. Verdict: <conclusion>" } }`. +- The skill you are running appends its own research-log line; add one only if it does not: `{ updates: [{ appendResearchLog: { summary: "Report: <title>. Verdict: <conclusion>" } }] }`. - If the save fails, the error names the limit and the value. Fix that one thing and save again. Never paste the report into chat instead. ## Starter template