Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@

# shouldBe - Kotlin/Scala assertion method name matched by the assertion-detection regex in the same script

ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,lod,InOut,INOUT,pixelX,aNULL,Wee,Sherif,queston,extenions,Vertexes,nin,FO,CAF,Parth,ans,gud,Vally,vally,checkin,ACI,soruce,straightaway,crystalize,implementors,evaulated,testng,shouldbe
# SearchD/searchd/Searchd - SearchD product and repository name

ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,lod,InOut,INOUT,pixelX,aNULL,Wee,Sherif,queston,extenions,Vertexes,nin,FO,CAF,Parth,ans,gud,Vally,vally,checkin,ACI,soruce,straightaway,crystalize,implementors,evaulated,testng,shouldbe,SearchD,searchd,Searchd

# Skip certain files and directories

Expand Down
1 change: 1 addition & 0 deletions docs/README.skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to
| [scaffolding-oracle-to-postgres-migration-test-project](../skills/scaffolding-oracle-to-postgres-migration-test-project/SKILL.md)<br />`gh skills install github/awesome-copilot scaffolding-oracle-to-postgres-migration-test-project` | Scaffolds an xUnit integration test project targeting Oracle in .NET solutions. Creates the test project, transaction-rollback base class, and seed data manager. Use only during Phase 3, before writing Oracle baseline integration tests. Do not invoke during Phase 6 — the PostgreSQL test project is produced by migrating this project, not by running this skill again. | None |
| [scoutqa-test](../skills/scoutqa-test/SKILL.md)<br />`gh skills install github/awesome-copilot scoutqa-test` | This skill should be used when the user asks to "test this website", "run exploratory testing", "check for accessibility issues", "verify the login flow works", "find bugs on this page", or requests automated QA testing. Triggers on web application testing scenarios including smoke tests, accessibility audits, e-commerce flows, and user flow validation using ScoutQA CLI. Use this skill proactively after implementing web application features to verify they work correctly. | None |
| [screen-recording](../skills/screen-recording/SKILL.md)<br />`gh skills install github/awesome-copilot screen-recording` | Create annotated animated GIF demos and screen recordings for pull requests and documentation. Covers frame capture, timing, imageio-based GIF creation, and per-frame annotation workflows. | None |
| [searchd-aeo-audit](../skills/searchd-aeo-audit/SKILL.md)<br />`gh skills install github/awesome-copilot searchd-aeo-audit` | Measure how often a company is named in answer-engine research, which competitors appear instead, and which sites shape the answers. Use when a user provides a company domain and asks about AEO, GEO, AI visibility, answer-engine exposure, competitor mentions, cited sources, or an HTML visibility report. | `.gitignore`<br />`DESIGN.md`<br />`LICENSE`<br />`README.md`<br />`examples/searchd-ai-audit.json`<br />`pyrightconfig.json`<br />`references/data-contract.md`<br />`references/methodology.md`<br />`schemas/audit.schema.json`<br />`scripts/aggregate.py`<br />`scripts/audit_fields.py`<br />`scripts/audit_parse.py`<br />`scripts/audit_types.py`<br />`scripts/render_report.py`<br />`scripts/report_common.py`<br />`scripts/report_evidence.py`<br />`scripts/report_locale.py`<br />`scripts/report_questions.py`<br />`templates/report.css`<br />`tests/test_render_report.py` |
| [secret-scanning](../skills/secret-scanning/SKILL.md)<br />`gh skills install github/awesome-copilot secret-scanning` | Guide for configuring and managing GitHub secret scanning, push protection, custom patterns, and secret alert remediation. For pre-commit secret scanning in AI coding agents via the GitHub MCP Server, this skill references the Advanced Security plugin (`advanced-security@copilot-plugins`). Use this skill when enabling secret scanning, setting up push protection, defining custom patterns, triaging alerts, resolving blocked pushes, or when an agent needs to scan code for secrets before committing. | `references/alerts-and-remediation.md`<br />`references/custom-patterns.md`<br />`references/push-protection.md` |
| [security-review](../skills/security-review/SKILL.md)<br />`gh skills install github/awesome-copilot security-review` | AI-powered codebase security scanner that reasons about code like a security researcher — tracing data flows, understanding component interactions, and catching vulnerabilities that pattern-matching tools miss. Use this skill when asked to scan code for security vulnerabilities, find bugs, check for SQL injection, XSS, command injection, exposed API keys, hardcoded secrets, insecure dependencies, access control issues, or any request like "is my code secure?", "review for security issues", "audit this codebase", or "check for vulnerabilities". Covers injection flaws, authentication and access control bugs, secrets exposure, weak cryptography, insecure dependencies, and business logic issues across JavaScript, TypeScript, Python, Java, PHP, Go, Ruby, and Rust. | `references/language-patterns.md`<br />`references/report-format.md`<br />`references/secret-patterns.md`<br />`references/vuln-categories.md`<br />`references/vulnerable-packages.md` |
| [semantic-kernel](../skills/semantic-kernel/SKILL.md)<br />`gh skills install github/awesome-copilot semantic-kernel` | Create, update, refactor, explain, or review Semantic Kernel solutions using shared guidance plus language-specific references for .NET and Python. | `references/dotnet.md`<br />`references/python.md` |
Expand Down
5 changes: 5 additions & 0 deletions skills/searchd-aeo-audit/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.venv/
129 changes: 129 additions & 0 deletions skills/searchd-aeo-audit/DESIGN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# SearchD AEO Audit Report Design System

## 0. Research Log

- Embedded references: shortlisted Notion, Wired, and Claude; selected
`minimalist-skill` + Notion for warm document structure, restrained rules,
and evidence-first reading.
- Report concept: the independent design lane proposed “The Citation Ledger,”
an editorial research memo organized as numbered exhibits rather than a SaaS
dashboard.
- Layout research: the report is a normal-flow reading document, so it avoids
app-shell navigation and gives wide tables explicit horizontal-scroll owners.
- Image concepts: omitted because the report must remain deterministic,
data-variable, and fully legible without decorative images.

## 1. Atmosphere & Identity

The report should feel like a dated research dossier: calm, inspectable, and
more interested in evidence than performance theater. Its signature is the
evidence rail—numbered exhibits that let every headline claim resolve into
questions, sources, and run records.

## 2. Color

| Role | Token | Value | Usage |
|---|---|---|---|
| Canvas | `--paper` | `#f3f0e8` | Browser and print-like page background |
| Sheet | `--sheet` | `#faf8f2` | Report surface |
| Primary text | `--ink` | `#191a18` | Headings and body |
| Secondary text | `--muted` | `#66675f` | Notes and metadata |
| Rule | `--rule` | `#c9c5b8` | Borders and table rules |
| Signal | `--signal` | `#a13f32` | SearchD emphasis and links |
| Signal surface | `--signal-soft` | `#ead7d1` | Measurement-boundary callout |
| Positive | `--positive` | `#2f6250` | Explicit named status |
| Neutral surface | `--neutral` | `#e7e3d8` | Unmeasured and secondary cells |

Color never communicates status alone; every state also has a text label.

## 3. Typography

| Level | Size | Weight | Line height | Usage |
|---|---:|---:|---:|---|
| Display | `clamp(2.5rem, 7vw, 5.25rem)` | 500 | 0.95 | Named rate |
| H1 | `clamp(2rem, 5vw, 3.5rem)` | 500 | 1.05 | Report title |
| H2 | `clamp(1.5rem, 3vw, 2.25rem)` | 500 | 1.15 | Exhibit title |
| H3 | `1.125rem` | 650 | 1.35 | Evidence heading |
| Body | `1rem` | 400 | 1.65 | Reading copy |
| Small | `0.875rem` | 400 | 1.5 | Captions and metadata |
| Label | `0.75rem` | 700 | 1.35 | Uppercase labels |

- Display and headings: `Georgia, "Times New Roman", serif`.
- Body and UI: `-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`.
- Evidence IDs and URLs: `"SFMono-Regular", Consolas, monospace`.
- Numeric tables use tabular figures.

## 4. Spacing & Layout

The base unit is 4px. Main tokens are 8, 12, 16, 24, 32, 48, 64, and 96px.

- Report maximum width: 1180px.
- Primary reading column: 760px.
- Desktop page inset: 48px.
- Mobile page inset: 20px.
- Major exhibit gap: 72px desktop and 48px mobile.
- Tables own their horizontal scrolling; the page itself must not overflow.

## 5. Components

### Report Masthead

- Structure: overline, title, scope sentence, metadata grid.
- Variants: screen and print.
- States: static.
- Accessibility: one visible H1 and semantic definition list.

### Metric Statement

- Structure: large named rate, numerator/denominator, supporting measures.
- Variants: measured and no-valid-runs.
- Accessibility: values exist as text, never chart-only.

### Boundary Callout

- Structure: label plus plain-language limitation.
- Variants: methodology and warning.
- Accessibility: border and label reinforce color.

### Exhibit

- Structure: numbered heading, explanation, table or ledger, caption.
- Variants: question, competitor, domain, evidence, action.
- Accessibility: semantic headings and table headers.

### Evidence Record

- Structure: ID, run metadata, excerpt, citations, analyst note.
- Variants: named, not named, failed.
- Accessibility: source text and analyst commentary are visually distinct.

## 6. Motion & Interaction

The report uses no decorative motion. Interactive links use a 150ms color
transition. Evidence disclosure controls rely on native `<details>` behavior
and remain expanded when printing. Reduced-motion preferences remove all
transitions.

## 7. Depth & Surface

Strategy: borders-only.

- Sheet boundary: one-pixel rule.
- Exhibits: top rules and whitespace, not cards.
- Callouts: tonal fill plus one strong left rule.
- No gradients, glass, or box shadows.

## 8. Accessibility Constraints & Accepted Debt

### Constraints

- WCAG 2.2 AA contrast.
- Full report readable with JavaScript and external assets disabled.
- Focus outlines visible on links and disclosure controls.
- Status never depends on color alone.
- At 320px, prose does not clip; only comparison tables may scroll.
- Print stylesheet expands evidence and repeats table headers.

### Accepted Debt

None.
21 changes: 21 additions & 0 deletions skills/searchd-aeo-audit/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 SearchD

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
81 changes: 81 additions & 0 deletions skills/searchd-aeo-audit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# SearchD AEO Audit Agent Skill

Measure whether a company appears in buyer-facing answer-engine research,
which competitors appear instead, and which public sources shape the answers.
The Skill produces a self-contained HTML report with run-level evidence.

## Install

Install with the portable Agent Skills CLI:

```bash
npx skills add runbear-io/searchd-skills --skill searchd-aeo-audit
```

The same package can be installed for compatible agents, including Claude Code
and Codex:

```bash
npx skills add runbear-io/searchd-skills \
--skill searchd-aeo-audit \
--agent claude-code \
--agent codex
```

Claude Code users can also install it from the SearchD marketplace:

```text
/plugin marketplace add runbear-io/searchd-skills
/plugin install searchd-aeo-audit@searchd-skills
```

## Use

Ask your agent to audit a public company domain:

```text
Run an AEO visibility audit for example.com in the United States.
Use 12 buyer questions and produce the HTML report in Korean.
```

The Skill:

1. Inspects public company pages as untrusted research material.
2. Freezes a buyer-authentic, unbranded question panel.
3. Runs isolated neutral research workers.
4. Matches the target brand only after each answer is complete.
5. Preserves completed and failed runs in a versioned JSON contract.
6. Renders a deterministic English or Korean HTML report.

## Measurement integrity

The audited brand, aliases, company context, and SearchD promotion are never
provided to neutral research workers. Named Rate, competitors, citations,
source domains, and evidence are calculated only from recorded runs.

Every report links its open-source implementation without adding paid-service
recommendations or commercial calls to action.

## Local validation

```bash
uv run --with pytest pytest -q tests
uvx ruff check .
uvx --with pytest basedpyright
uvx check-jsonschema \
--schemafile schemas/audit.schema.json \
examples/searchd-ai-audit.json
```

Render the included example:

```bash
python3 scripts/render_report.py \
--input examples/searchd-ai-audit.json \
--output /tmp/searchd-aeo-audit.html \
--locale en
```

## License

MIT. See `LICENSE`.
Loading
Loading