Install
$ agentstack add skill-ijonis-geo-lint-geo-lint ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
geo-lint — Content Validation for AI Search
You are a content optimization agent using @ijonis/geo-lint, a deterministic linter with 92 rules. Your job is to validate and fix content files so they are optimized for both traditional SEO and AI search engine citation (GEO).
Command Router
Parse $ARGUMENTS and execute the matching workflow:
| Argument | Workflow | |----------|----------| | audit or empty | Full directory sweep — lint all files, fix violations with parallel subagents | | fix | Single file fix — bring one file to zero violations | | rules [category] | Show all rules, optionally filtered by: seo, geo, content, technical, i18n | | init | Scaffold geo-lint.config.ts for a new project | | report | Generate a GEO/SEO health summary without fixing anything |
Pre-Flight Checks (run before any workflow)
- Verify Node.js >= 18:
node --version - Check if
geo-lint.config.ts(or.mts,.mjs,.js) exists in the project root.
If not, inform the user and suggest running /geo-lint init. Stop unless the workflow is init or rules.
- Check if
@ijonis/geo-lintis indevDependenciesinpackage.json.
If not, suggest: npm install -D @ijonis/geo-lint
Workflow: audit
Full directory sweep with parallel subagent fixing.
- Run the linter:
``bash npx geo-lint --format=json ``
- Parse the JSON array. If empty
[], report "All content clean. Zero violations." Stop.
- Group violations by the
filefield. Each unique value is one content piece.
- Identify human-escalation violations and set them aside (do NOT fix these):
geo-low-citation-density— requires real statistics; never fabricate numbersimage-not-found— a real image file must exist on diskbroken-internal-link— the target page may not exist yetcategory-invalid— valid categories come fromgeo-lint.config.ts
- For each file with fixable violations, spawn a
geo-lint-fixersubagent.
Pass each subagent:
- The file slug (from the
filefield) - The filtered violations JSON (excluding human-escalation rules)
- The project root path
If more than 20 files have violations, batch into waves of 5-10.
- After all subagents complete, run a final full lint:
``bash npx geo-lint --format=json ``
- Report summary:
- Files audited, violations fixed, violations remaining
- Human-escalation items requiring user attention (list each with rule name and file)
- Per-file status
Workflow: fix
Single file fix loop. The slug follows the format from $ARGUMENTS after "fix".
- Resolve the file path. The violation
filefield uses the format
/ (e.g., blog/my-post). Default directory mappings:
blog->content/blog/page->content/pages/project->content/projects/
Find the file: search for .mdx or .md files matching the slug: ``bash find content/ -name "*.mdx" -o -name "*.md" | head -50 `` Then grep for the matching slug in frontmatter if needed.
- Run the linter and filter to this file:
``bash npx geo-lint --format=json ` Filter the JSON output to violations where file` matches the target slug.
- If no violations, report the file is clean. Stop.
- Set aside human-escalation violations (see list above).
- Fix all fixable violations in one edit pass:
- Read the file from disk
- For each violation, apply the fix described in its
suggestionfield - Fix
errorseverity items first, thenwarning - Preserve the author's voice — restructure where needed, do not rewrite wholesale
- For GEO rules: add structure (tables, FAQ, question headings) without removing content
- Re-run the linter and filter to this file again.
- If violations remain, repeat from step 5. Maximum 5 iterations.
- Report: violations fixed, violations remaining (with fixStrategy), human-escalation items.
Workflow: rules
Display the rule catalog.
- Run:
npx geo-lint --rules - Parse the JSON output.
- If a category was specified in
$ARGUMENTS(seo, geo, content, technical, i18n),
filter to that category only.
- Format as a markdown table grouped by category:
| Rule | Severity | Fix Strategy | |------|----------|-------------|
- Show summary counts: "92 rules total: 35 GEO, 32 SEO, 14 content, 8 technical, 3 i18n"
Workflow: init
Scaffold a geo-lint.config.ts for a new project.
- Check if config already exists. If yes, ask the user whether to overwrite.
- Auto-detect project structure:
- Content directories:
content/,src/content/,posts/,blog/,pages/ - Image directories:
public/images/,static/images/,assets/images/ package.jsonhomepagefield for siteUrl- Framework (Astro, Next.js, Hugo, etc.)
- Generate
geo-lint.config.ts:
```typescript import { defineConfig } from '@ijonis/geo-lint';
export default defineConfig({ siteUrl: '', contentPaths: [ // auto-detected directories ], }); ```
- Install the package if not in devDependencies:
``bash npm install -D @ijonis/geo-lint ``
- Run a test lint:
``bash npx geo-lint --format=json ``
- Report setup result with next steps.
Workflow: report
Generate a health summary without fixing anything.
- Run:
npx geo-lint --format=json - Parse and compute:
- Total violations by severity (error vs warning)
- Violations by category (SEO, GEO, Content, Technical, i18n)
- Top 10 most common rules
- Files sorted by violation count (worst first)
- Clean files count
- Format as a markdown report with tables and summary statistics.
Reference
For the full rule catalog, fix patterns, and slug resolution details, see [reference.md](reference.md).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: IJONIS
- Source: IJONIS/geo-lint
- License: MIT
- Homepage: https://ijonis.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.