@fenixforce/edition-pro 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/approval-routes.d.ts +15 -0
- package/dist/api/fleet-routes.d.ts +23 -0
- package/dist/api/integration-routes.d.ts +17 -0
- package/dist/api/middleware.d.ts +37 -0
- package/dist/boot.d.ts +37 -0
- package/dist/business/approval-queue.d.ts +94 -0
- package/dist/business/arena.d.ts +71 -0
- package/dist/business/best-of-n.d.ts +68 -0
- package/dist/business/brainstorm.d.ts +42 -0
- package/dist/business/compile-checker.d.ts +50 -0
- package/dist/business/debate.d.ts +38 -0
- package/dist/business/fleet-budget.d.ts +69 -0
- package/dist/business/fleet-config.d.ts +125 -0
- package/dist/business/fleet.d.ts +85 -0
- package/dist/business/handoff.d.ts +56 -0
- package/dist/business/hat-system.d.ts +57 -0
- package/dist/business/index.d.ts +44 -0
- package/dist/business/integration-registry.d.ts +66 -0
- package/dist/business/node-pipeline.d.ts +62 -0
- package/dist/business/oracle.d.ts +64 -0
- package/dist/business/roles/index.d.ts +7 -0
- package/dist/business/roles/judge.d.ts +24 -0
- package/dist/business/roles/planner.d.ts +30 -0
- package/dist/business/roles/types.d.ts +37 -0
- package/dist/business/roles/worker.d.ts +25 -0
- package/dist/business/router.d.ts +75 -0
- package/dist/business/shared-memory.d.ts +85 -0
- package/dist/business/status-detector.d.ts +52 -0
- package/dist/business/swarm-registry.d.ts +63 -0
- package/dist/business/templates.d.ts +55 -0
- package/dist/business/workspace-manager.d.ts +105 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +638 -0
- package/dist/infrastructure/pty-agent.d.ts +74 -0
- package/dist/migrations/migrate.d.ts +7 -0
- package/dist/migrations/runner.d.ts +49 -0
- package/dist/workspace/worktree.d.ts +69 -0
- package/package.json +37 -0
- package/skills/builtin/academic-researcher/SKILL.md +51 -0
- package/skills/builtin/advanced-recon/SKILL.md +75 -0
- package/skills/builtin/agent-governance/SKILL.md +122 -0
- package/skills/builtin/algorithmic-art/SKILL.md +55 -0
- package/skills/builtin/api-attack-surface-mapper/SKILL.md +88 -0
- package/skills/builtin/api-development/SKILL.md +147 -0
- package/skills/builtin/api-exploit-prover/SKILL.md +74 -0
- package/skills/builtin/api-integration/SKILL.md +73 -0
- package/skills/builtin/api-security-tester/SKILL.md +82 -0
- package/skills/builtin/api-test-executor/SKILL.md +62 -0
- package/skills/builtin/app-store-optimization/SKILL.md +46 -0
- package/skills/builtin/audio-tour-guide/SKILL.md +18 -0
- package/skills/builtin/auth-flow-operator/SKILL.md +70 -0
- package/skills/builtin/autonomous-rag/SKILL.md +21 -0
- package/skills/builtin/backend-development/SKILL.md +265 -0
- package/skills/builtin/binary-analysis-analyst/SKILL.md +61 -0
- package/skills/builtin/binary-analysis-core/SKILL.md +65 -0
- package/skills/builtin/binary-recon/SKILL.md +64 -0
- package/skills/builtin/blackboard-coordination/SKILL.md +56 -0
- package/skills/builtin/blog-to-podcast/SKILL.md +18 -0
- package/skills/builtin/blog-writing/SKILL.md +36 -0
- package/skills/builtin/brainstorming/SKILL.md +69 -0
- package/skills/builtin/brand-design/SKILL.md +42 -0
- package/skills/builtin/ci-cd-pipelines/SKILL.md +210 -0
- package/skills/builtin/cloud-infrastructure/SKILL.md +140 -0
- package/skills/builtin/code-review/SKILL.md +88 -0
- package/skills/builtin/code-review-analyst/SKILL.md +96 -0
- package/skills/builtin/code-review-recon/SKILL.md +64 -0
- package/skills/builtin/code-review-verifier/SKILL.md +55 -0
- package/skills/builtin/coding-agent-team/SKILL.md +13 -0
- package/skills/builtin/competitor-intelligence/SKILL.md +39 -0
- package/skills/builtin/content-engine/SKILL.md +82 -0
- package/skills/builtin/context7-docs/SKILL.md +145 -0
- package/skills/builtin/copywriting/SKILL.md +38 -0
- package/skills/builtin/corrective-rag/SKILL.md +19 -0
- package/skills/builtin/cost-optimization/SKILL.md +131 -0
- package/skills/builtin/crypto-vulnerability-analyst/SKILL.md +64 -0
- package/skills/builtin/customer-support/SKILL.md +48 -0
- package/skills/builtin/customer-voice-support/SKILL.md +43 -0
- package/skills/builtin/data-analysis/SKILL.md +57 -0
- package/skills/builtin/data-visualization/SKILL.md +33 -0
- package/skills/builtin/database-design/SKILL.md +119 -0
- package/skills/builtin/decision-helper/SKILL.md +84 -0
- package/skills/builtin/deep-research/SKILL.md +68 -0
- package/skills/builtin/deepwiki-research/SKILL.md +115 -0
- package/skills/builtin/dependency-audit/SKILL.md +46 -0
- package/skills/builtin/doc-coauthoring/SKILL.md +48 -0
- package/skills/builtin/docker-deployment/SKILL.md +243 -0
- package/skills/builtin/docx-generation/SKILL.md +135 -0
- package/skills/builtin/dry-run-harness/SKILL.md +61 -0
- package/skills/builtin/editor/SKILL.md +44 -0
- package/skills/builtin/email-drafter/SKILL.md +42 -0
- package/skills/builtin/error-handling/SKILL.md +82 -0
- package/skills/builtin/eval-harness/SKILL.md +197 -0
- package/skills/builtin/evaluation-framework/SKILL.md +51 -0
- package/skills/builtin/exploit-writer/SKILL.md +63 -0
- package/skills/builtin/fact-checker/SKILL.md +51 -0
- package/skills/builtin/filesystem-context/SKILL.md +47 -0
- package/skills/builtin/financial-coach/SKILL.md +18 -0
- package/skills/builtin/finding-chain-correlator/SKILL.md +70 -0
- package/skills/builtin/finding-verifier/SKILL.md +65 -0
- package/skills/builtin/frontend-design/SKILL.md +104 -0
- package/skills/builtin/frontend-development/SKILL.md +227 -0
- package/skills/builtin/frontend-slides/SKILL.md +155 -0
- package/skills/builtin/fullstack-project/SKILL.md +286 -0
- package/skills/builtin/game-development/SKILL.md +60 -0
- package/skills/builtin/git-workflow/SKILL.md +44 -0
- package/skills/builtin/i18n-localization/SKILL.md +38 -0
- package/skills/builtin/image-prompt-engineering/SKILL.md +37 -0
- package/skills/builtin/investment-research/SKILL.md +33 -0
- package/skills/builtin/investor-materials/SKILL.md +90 -0
- package/skills/builtin/javascript-surface-analyzer/SKILL.md +66 -0
- package/skills/builtin/markdown-reports/SKILL.md +68 -0
- package/skills/builtin/market-research/SKILL.md +69 -0
- package/skills/builtin/mcp-builder/SKILL.md +86 -0
- package/skills/builtin/meeting-notes/SKILL.md +47 -0
- package/skills/builtin/memory-safety-analyst/SKILL.md +61 -0
- package/skills/builtin/meta-controller/SKILL.md +44 -0
- package/skills/builtin/mixture-of-agents/SKILL.md +53 -0
- package/skills/builtin/monitoring-observability/SKILL.md +169 -0
- package/skills/builtin/negotiation-simulator/SKILL.md +24 -0
- package/skills/builtin/nestjs-development/SKILL.md +56 -0
- package/skills/builtin/nextjs-development/SKILL.md +55 -0
- package/skills/builtin/parallel-dispatch/SKILL.md +83 -0
- package/skills/builtin/pdf-generation/SKILL.md +169 -0
- package/skills/builtin/personal-finance/SKILL.md +17 -0
- package/skills/builtin/pev-workflow/SKILL.md +62 -0
- package/skills/builtin/planning-with-files/SKILL.md +59 -0
- package/skills/builtin/pptx-generation/SKILL.md +117 -0
- package/skills/builtin/prisma-orm/SKILL.md +48 -0
- package/skills/builtin/rag-database-routing/SKILL.md +38 -0
- package/skills/builtin/rapid-prototyping/SKILL.md +152 -0
- package/skills/builtin/react-development/SKILL.md +244 -0
- package/skills/builtin/react-native-mobile/SKILL.md +113 -0
- package/skills/builtin/refactoring/SKILL.md +39 -0
- package/skills/builtin/reflexive-metacognition/SKILL.md +29 -0
- package/skills/builtin/riper-workflow/SKILL.md +214 -0
- package/skills/builtin/security-audit/SKILL.md +113 -0
- package/skills/builtin/security-self-audit/SKILL.md +311 -0
- package/skills/builtin/self-evolving-agent/SKILL.md +28 -0
- package/skills/builtin/self-improvement-loop/SKILL.md +58 -0
- package/skills/builtin/semantic-search/SKILL.md +93 -0
- package/skills/builtin/seo-audit-team/SKILL.md +27 -0
- package/skills/builtin/seo-optimization/SKILL.md +49 -0
- package/skills/builtin/server-management/SKILL.md +190 -0
- package/skills/builtin/social-media-content/SKILL.md +50 -0
- package/skills/builtin/sprint-planner/SKILL.md +49 -0
- package/skills/builtin/strategic-compact/SKILL.md +61 -0
- package/skills/builtin/strategy-advisor/SKILL.md +51 -0
- package/skills/builtin/structured-thinking/SKILL.md +70 -0
- package/skills/builtin/subagent-development/SKILL.md +105 -0
- package/skills/builtin/system-design/SKILL.md +66 -0
- package/skills/builtin/systematic-debugging/SKILL.md +87 -0
- package/skills/builtin/tailwind-css/SKILL.md +55 -0
- package/skills/builtin/taint-flow-tracer/SKILL.md +89 -0
- package/skills/builtin/teaching-agent-team/SKILL.md +32 -0
- package/skills/builtin/tech-debt-manager/SKILL.md +67 -0
- package/skills/builtin/technical-documentation/SKILL.md +47 -0
- package/skills/builtin/test-driven-development/SKILL.md +70 -0
- package/skills/builtin/theme-factory/SKILL.md +244 -0
- package/skills/builtin/threat-model-generator/SKILL.md +105 -0
- package/skills/builtin/trust-layer/SKILL.md +43 -0
- package/skills/builtin/typescript-patterns/SKILL.md +61 -0
- package/skills/builtin/ui-ux-design/SKILL.md +75 -0
- package/skills/builtin/verification-before-completion/SKILL.md +41 -0
- package/skills/builtin/verification-loop/SKILL.md +120 -0
- package/skills/builtin/waf-bypass-agent/SKILL.md +97 -0
- package/skills/builtin/web-artifacts-builder/SKILL.md +117 -0
- package/skills/builtin/web-assessment-executor/SKILL.md +66 -0
- package/skills/builtin/web-exploit-prover/SKILL.md +58 -0
- package/skills/builtin/web-scraping/SKILL.md +63 -0
- package/skills/builtin/webapp-testing/SKILL.md +86 -0
- package/skills/builtin/webhook-development/SKILL.md +62 -0
- package/skills/builtin/writing-skills/SKILL.md +67 -0
- package/skills/builtin/xlsx-generation/SKILL.md +116 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-audit
|
|
3
|
+
description: "Use this skill when auditing application security, testing for vulnerabilities, checking OWASP compliance, or performing pre-launch security reviews. Triggers: 'security audit', 'vulnerability', 'penetration test', 'OWASP', 'prompt injection', 'security review', 'pre-launch check', or any request to evaluate application security."
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Security Audit
|
|
8
|
+
|
|
9
|
+
## What This Skill Does
|
|
10
|
+
|
|
11
|
+
Audit applications against OWASP Top 10 for LLM applications and standard web security. Prompt injection testing, data leakage checks, input validation, auth verification.
|
|
12
|
+
|
|
13
|
+
## Audit Checklist
|
|
14
|
+
|
|
15
|
+
### 1. Prompt Injection (OWASP LLM01)
|
|
16
|
+
- Direct: "Ignore previous instructions..."
|
|
17
|
+
- Indirect: Embedded in documents the agent processes
|
|
18
|
+
- Context manipulation: "The system prompt says..."
|
|
19
|
+
- Encoding evasion: base64, unicode, markdown injection
|
|
20
|
+
- Verify instruction hierarchy blocks all escalation
|
|
21
|
+
|
|
22
|
+
### 2. Data Leakage (OWASP LLM06)
|
|
23
|
+
- Can user extract the system prompt?
|
|
24
|
+
- Can user access other users' data? (session isolation)
|
|
25
|
+
- Are API keys visible in any output?
|
|
26
|
+
- Does privacy classification prevent PII in logs?
|
|
27
|
+
|
|
28
|
+
### 3. Input Validation
|
|
29
|
+
- Max input length enforced?
|
|
30
|
+
- File upload restrictions (type, size)?
|
|
31
|
+
- URL validation (SSRF protection)?
|
|
32
|
+
- Shell command sanitization?
|
|
33
|
+
- SQL injection vectors?
|
|
34
|
+
|
|
35
|
+
### 4. Authentication & Authorization
|
|
36
|
+
- All API endpoints authenticated?
|
|
37
|
+
- Workspace/tenant isolation enforced?
|
|
38
|
+
- Rate limiting on auth endpoints?
|
|
39
|
+
- Password hashing with bcrypt/argon2?
|
|
40
|
+
- JWT expiration and refresh working?
|
|
41
|
+
|
|
42
|
+
### 5. Dependencies
|
|
43
|
+
- `bun audit` / `npm audit` zero critical vulns?
|
|
44
|
+
- No known-vulnerable packages?
|
|
45
|
+
- Packages pinned to specific versions?
|
|
46
|
+
|
|
47
|
+
## Report Format
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# Security Audit Report
|
|
51
|
+
**Date:** YYYY-MM-DD
|
|
52
|
+
**Scope:** [what was audited]
|
|
53
|
+
|
|
54
|
+
## Findings
|
|
55
|
+
|
|
56
|
+
### [CRITICAL] Finding Name
|
|
57
|
+
**Location:** file:line
|
|
58
|
+
**Description:** What's wrong
|
|
59
|
+
**Reproduction:** Steps to exploit
|
|
60
|
+
**Remediation:** How to fix
|
|
61
|
+
|
|
62
|
+
## Passed Checks
|
|
63
|
+
- [list of things that passed]
|
|
64
|
+
|
|
65
|
+
## Risk Rating: [LOW/MEDIUM/HIGH/CRITICAL]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
70
|
+
- Never skip prompt injection testing
|
|
71
|
+
- Test in staging, never production
|
|
72
|
+
- Document every finding with reproduction steps
|
|
73
|
+
- Critical and High findings block deployment
|
|
74
|
+
- Re-test after fixes are applied
|
|
75
|
+
|
|
76
|
+
## Policy-Based Sandboxing (Agent Governance pattern)
|
|
77
|
+
|
|
78
|
+
Define allowed and denied actions in YAML policy files:
|
|
79
|
+
```yaml
|
|
80
|
+
policies:
|
|
81
|
+
- name: no-destructive-writes
|
|
82
|
+
actions: [delete_file, drop_table, rm_rf]
|
|
83
|
+
decision: deny
|
|
84
|
+
reason: "Destructive operations require human approval"
|
|
85
|
+
- name: rate-limit-api
|
|
86
|
+
actions: [external_api_call]
|
|
87
|
+
max_per_minute: 10
|
|
88
|
+
decision: allow_with_limit
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Intercept tool calls before execution. Check against policies. Log every decision.
|
|
92
|
+
|
|
93
|
+
## Trust Scoring
|
|
94
|
+
|
|
95
|
+
Agents earn trust through successful operations, lose trust on failures:
|
|
96
|
+
- SUSPENDED (0-299): cannot execute any tools
|
|
97
|
+
- RESTRICTED (300-499): read-only tools only
|
|
98
|
+
- BASIC (500-699): standard tool access
|
|
99
|
+
- TRUSTED (700-899): elevated access
|
|
100
|
+
- PRIVILEGED (900-1000): full access including destructive operations
|
|
101
|
+
|
|
102
|
+
Scoring: +10 for successful operations, -20 for failures, -100 for security violations.
|
|
103
|
+
|
|
104
|
+
## Delegation Chains
|
|
105
|
+
|
|
106
|
+
When Agent A delegates to Agent B, B's permissions must be a strict subset of A's. Scope narrows at each delegation level. An agent cannot grant permissions it doesn't have.
|
|
107
|
+
|
|
108
|
+
## Dry-Run Harness
|
|
109
|
+
|
|
110
|
+
For any action with real-world consequences (deploy, send email, delete data):
|
|
111
|
+
1. **Propose**: list all side effects the action will have
|
|
112
|
+
2. **Review**: surface logs, expected outcomes, reversibility
|
|
113
|
+
3. **Execute**: only after explicit approval
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# Security Self-Audit Skill
|
|
2
|
+
|
|
3
|
+
## Trigger
|
|
4
|
+
Activate when: user mentions "security audit", "check security", "audit deployment", "security hardening", "what vulnerabilities", "run security check", "security posture", "security review".
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
Comprehensive read-only audit of the Fenix deployment's security posture across 12 domains. Generates a structured severity report with specific remediations. **Never modifies configuration — read-only analysis only.**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Audit Procedure
|
|
12
|
+
|
|
13
|
+
For each of the 12 domains below, follow this pattern:
|
|
14
|
+
1. **Check** — Run the detection command(s) to assess the domain
|
|
15
|
+
2. **Compare** — Compare findings against the secure baseline
|
|
16
|
+
3. **Score** — Assign severity: CRITICAL / HIGH / MEDIUM / PASSED
|
|
17
|
+
4. **Remediate** — Provide specific remediation steps if not PASSED
|
|
18
|
+
|
|
19
|
+
Present findings in this format:
|
|
20
|
+
```
|
|
21
|
+
🔴 CRITICAL: [domain] — [finding] → [remediation]
|
|
22
|
+
🟠 HIGH: [domain] — [finding] → [remediation]
|
|
23
|
+
🟡 MEDIUM: [domain] — [finding] → [remediation]
|
|
24
|
+
✅ PASSED: [domain]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
End with a summary line:
|
|
28
|
+
```
|
|
29
|
+
Summary: N critical, N high, N medium, N passed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Domain 1: Gateway Exposure
|
|
35
|
+
|
|
36
|
+
**Check:** Examine server configuration files for network binding and authentication settings.
|
|
37
|
+
- Read the main server/gateway config (e.g., `config.yaml`, `server.ts`, `.env`)
|
|
38
|
+
- Look for `host`, `bind`, `listen` directives
|
|
39
|
+
- Check for authentication tokens and API key requirements
|
|
40
|
+
|
|
41
|
+
**Baseline:**
|
|
42
|
+
- Server binds to `127.0.0.1` or `0.0.0.0` behind a reverse proxy with TLS
|
|
43
|
+
- All API endpoints require authentication (token, API key, or session)
|
|
44
|
+
- No exposed debug/admin endpoints without auth
|
|
45
|
+
|
|
46
|
+
**CRITICAL if:** Server binds to `0.0.0.0` without TLS or auth on any endpoint
|
|
47
|
+
**HIGH if:** Debug endpoints (healthz, metrics, admin) are unauthenticated
|
|
48
|
+
**MEDIUM if:** Auth is present but uses weak/default tokens
|
|
49
|
+
|
|
50
|
+
**Remediation:** Bind to loopback, put behind reverse proxy with TLS, require auth on all endpoints.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Domain 2: DM / Channel Access Policy
|
|
55
|
+
|
|
56
|
+
**Check:** Review channel configuration for direct message handling.
|
|
57
|
+
- Look for DM/direct-message config in workspace settings
|
|
58
|
+
- Check if DM access is allowlisted or open to all users
|
|
59
|
+
|
|
60
|
+
**Baseline:**
|
|
61
|
+
- DM access restricted to allowlisted users
|
|
62
|
+
- Unknown users receive a rejection message, not silent processing
|
|
63
|
+
|
|
64
|
+
**HIGH if:** DMs from unknown users are processed without allowlist
|
|
65
|
+
**MEDIUM if:** DM allowlist exists but includes wildcard or overly broad patterns
|
|
66
|
+
|
|
67
|
+
**Remediation:** Configure explicit DM allowlist. Reject unknown users with informative message.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Domain 3: Group Access Control
|
|
72
|
+
|
|
73
|
+
**Check:** Review group channel configuration.
|
|
74
|
+
- Look for mention gating and channel allowlist settings
|
|
75
|
+
- Check if the agent responds to all messages or only mentions
|
|
76
|
+
|
|
77
|
+
**Baseline:**
|
|
78
|
+
- Agent only responds to @mentions in group channels
|
|
79
|
+
- Channel allowlist limits which channels the agent operates in
|
|
80
|
+
- Non-allowlisted channels are ignored entirely
|
|
81
|
+
|
|
82
|
+
**HIGH if:** Agent responds to all messages in group channels (no mention gating)
|
|
83
|
+
**MEDIUM if:** Mention gating exists but channel allowlist is missing or overly broad
|
|
84
|
+
|
|
85
|
+
**Remediation:** Enable mention gating. Configure channel allowlist. Set fallback to ignore.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Domain 4: Credential Security
|
|
90
|
+
|
|
91
|
+
**Check:** Examine credential storage and access patterns.
|
|
92
|
+
- Check file permissions on credential files (`.env`, `credentials.json`, keyfiles)
|
|
93
|
+
- Look for plaintext secrets in config files vs. environment variables
|
|
94
|
+
- Check if encrypted credential storage is used
|
|
95
|
+
|
|
96
|
+
**Baseline:**
|
|
97
|
+
- Credential files have `600` permissions (owner read/write only)
|
|
98
|
+
- No plaintext secrets in config files — all via env vars or encrypted storage
|
|
99
|
+
- API keys rotated on a regular schedule
|
|
100
|
+
|
|
101
|
+
**CRITICAL if:** Credentials stored in plaintext in committed config files
|
|
102
|
+
**HIGH if:** Credential files have world-readable permissions (644 or 755)
|
|
103
|
+
**MEDIUM if:** Credentials in env vars but `.env` file has loose permissions
|
|
104
|
+
|
|
105
|
+
**Remediation:** Move secrets to env vars or encrypted storage. Set file permissions to 600. Add `.env` to `.gitignore`.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Domain 5: Browser Control Exposure
|
|
110
|
+
|
|
111
|
+
**Check:** If browser/puppeteer control is enabled, check its configuration.
|
|
112
|
+
- Look for browser automation config (Puppeteer, Playwright, Selenium)
|
|
113
|
+
- Check if remote debugging port is exposed
|
|
114
|
+
- Verify HTTPS requirements for browser-fetched content
|
|
115
|
+
|
|
116
|
+
**Baseline:**
|
|
117
|
+
- Browser remote debugging disabled or bound to loopback only
|
|
118
|
+
- Browser auth tokens required for WebSocket connections
|
|
119
|
+
- HTTPS enforced for all browser navigation
|
|
120
|
+
|
|
121
|
+
**CRITICAL if:** Remote debugging port exposed on non-loopback interface without auth
|
|
122
|
+
**HIGH if:** Browser navigates to HTTP URLs without user confirmation
|
|
123
|
+
**MEDIUM if:** Browser automation enabled but no sandbox flags
|
|
124
|
+
|
|
125
|
+
**Remediation:** Bind debugging to loopback. Require auth. Enable `--no-sandbox` only in containers. Enforce HTTPS.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Domain 6: Network Bind and Proxy Config
|
|
130
|
+
|
|
131
|
+
**Check:** Review all network listeners and proxy configurations.
|
|
132
|
+
- Find all `listen`, `bind`, `port` directives
|
|
133
|
+
- Check for reverse proxy configuration (nginx, caddy, traefik)
|
|
134
|
+
- Verify TLS termination settings
|
|
135
|
+
|
|
136
|
+
**Baseline:**
|
|
137
|
+
- Application binds to loopback (`127.0.0.1`)
|
|
138
|
+
- Reverse proxy handles TLS termination and public exposure
|
|
139
|
+
- No direct public exposure of application ports
|
|
140
|
+
|
|
141
|
+
**CRITICAL if:** Application ports directly exposed to public internet without TLS
|
|
142
|
+
**HIGH if:** Proxy configured but TLS not enforced (allows HTTP fallback)
|
|
143
|
+
**MEDIUM if:** Internal services communicate without TLS (acceptable in isolated networks)
|
|
144
|
+
|
|
145
|
+
**Remediation:** Put behind reverse proxy. Enforce TLS. Bind application to loopback.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Domain 7: Tool Access and Sandboxing
|
|
150
|
+
|
|
151
|
+
**Check:** Review tool access configuration and sandbox settings.
|
|
152
|
+
- Check which tools are enabled and their permission levels
|
|
153
|
+
- Look for workspace boundary enforcement
|
|
154
|
+
- Verify bash command restrictions
|
|
155
|
+
|
|
156
|
+
**Baseline:**
|
|
157
|
+
- Tools restricted to workspace directory
|
|
158
|
+
- Bash commands filtered through dangerous command blocker
|
|
159
|
+
- File operations sandboxed to workspace root
|
|
160
|
+
- MCP tools explicitly allowlisted
|
|
161
|
+
|
|
162
|
+
**HIGH if:** Tools can access files outside workspace without restriction
|
|
163
|
+
**HIGH if:** Bash commands not filtered through safety guard rails
|
|
164
|
+
**MEDIUM if:** MCP tools auto-approved without explicit allowlist
|
|
165
|
+
|
|
166
|
+
**Remediation:** Enable workspace boundary enforcement. Activate guard rails. Require explicit MCP tool approval.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Domain 8: File Permissions and Disk Hygiene
|
|
171
|
+
|
|
172
|
+
**Check:** Audit file permissions for sensitive directories.
|
|
173
|
+
- Check permissions on workspace config directory
|
|
174
|
+
- Verify log file permissions
|
|
175
|
+
- Look for temp files with sensitive content
|
|
176
|
+
|
|
177
|
+
**Baseline:**
|
|
178
|
+
- Config directories: `700` (owner only)
|
|
179
|
+
- Config files: `600` (owner read/write)
|
|
180
|
+
- Log files: `640` or stricter
|
|
181
|
+
- No sensitive content in `/tmp` with world-readable permissions
|
|
182
|
+
|
|
183
|
+
**HIGH if:** Config directories are world-readable (755 with sensitive files)
|
|
184
|
+
**MEDIUM if:** Log files contain sensitive data and are broadly readable
|
|
185
|
+
|
|
186
|
+
**Remediation:** Set directories to 700, files to 600. Rotate and restrict log access. Clean temp files.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Domain 9: Plugin Trust
|
|
191
|
+
|
|
192
|
+
**Check:** Review installed plugins/extensions and their trust status.
|
|
193
|
+
- List all registered extensions and MCP servers
|
|
194
|
+
- Check for explicit allowlist configuration
|
|
195
|
+
- Verify extension versions are current
|
|
196
|
+
|
|
197
|
+
**Baseline:**
|
|
198
|
+
- All extensions explicitly allowlisted in workspace config
|
|
199
|
+
- No auto-installed or auto-updated plugins
|
|
200
|
+
- Extension versions pinned and reviewed
|
|
201
|
+
|
|
202
|
+
**HIGH if:** Extensions auto-install without explicit approval
|
|
203
|
+
**MEDIUM if:** Extensions are allowlisted but versions are not pinned
|
|
204
|
+
**MEDIUM if:** Outdated extensions with known vulnerabilities
|
|
205
|
+
|
|
206
|
+
**Remediation:** Require explicit extension allowlist. Pin versions. Review and update regularly.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Domain 10: Logging and Redaction
|
|
211
|
+
|
|
212
|
+
**Check:** Review logging configuration for sensitive data handling.
|
|
213
|
+
- Check if tool outputs containing secrets are redacted in logs
|
|
214
|
+
- Verify log retention and access policies
|
|
215
|
+
- Look for PII in log output
|
|
216
|
+
|
|
217
|
+
**Baseline:**
|
|
218
|
+
- Secret patterns (API keys, tokens, passwords) redacted before logging
|
|
219
|
+
- Logs stored with restricted access (not world-readable)
|
|
220
|
+
- Log retention policy configured (not indefinite)
|
|
221
|
+
|
|
222
|
+
**HIGH if:** Secrets appear in plaintext in log files
|
|
223
|
+
**MEDIUM if:** Logs are not redacted but access is restricted
|
|
224
|
+
**MEDIUM if:** No log retention policy (unbounded growth with potential sensitive data)
|
|
225
|
+
|
|
226
|
+
**Remediation:** Enable secret redaction in log pipeline. Set retention policy. Restrict log file access.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Domain 11: Prompt Injection Protection
|
|
231
|
+
|
|
232
|
+
**Check:** Review untrusted content handling configuration.
|
|
233
|
+
- Check if content wrapper is enabled for external sources
|
|
234
|
+
- Verify mention gating in group contexts
|
|
235
|
+
- Look for injection pattern detection in security engine
|
|
236
|
+
|
|
237
|
+
**Baseline:**
|
|
238
|
+
- Untrusted content wrapped in XML delimiters before LLM context injection
|
|
239
|
+
- Mention gating active in group channels
|
|
240
|
+
- Security engine prompt injection detector enabled
|
|
241
|
+
- Standing instruction against following wrapped content
|
|
242
|
+
|
|
243
|
+
**CRITICAL if:** No content wrapping and agent processes external web content
|
|
244
|
+
**HIGH if:** Content wrapping disabled but agent fetches URLs
|
|
245
|
+
**MEDIUM if:** Content wrapping enabled but mention gating disabled in groups
|
|
246
|
+
|
|
247
|
+
**Remediation:** Enable content wrapper extension. Activate mention gating. Verify security engine is running all modules.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Domain 12: Dangerous Command Blocking
|
|
252
|
+
|
|
253
|
+
**Check:** Review the dangerous command deny list.
|
|
254
|
+
- Check guard rails configuration for blocked commands
|
|
255
|
+
- Verify coverage of destructive operations
|
|
256
|
+
- Test that bypass patterns (encoding, aliasing) are covered
|
|
257
|
+
|
|
258
|
+
**Baseline:**
|
|
259
|
+
- Deny list covers: `rm -rf /`, `git reset --hard`, `DROP TABLE`, `git push --force`, `chmod 777`, `mkfs`, `dd` to devices
|
|
260
|
+
- Guard rails registered at priority 0 (fires before all extensions)
|
|
261
|
+
- No bypass through command aliasing or encoding
|
|
262
|
+
|
|
263
|
+
**HIGH if:** Dangerous command blocker is disabled or not registered
|
|
264
|
+
**MEDIUM if:** Deny list is active but incomplete (missing key destructive commands)
|
|
265
|
+
**MEDIUM if:** Commands can bypass via aliasing (e.g., `\rm`, backtick substitution)
|
|
266
|
+
|
|
267
|
+
**Remediation:** Ensure guard-rails extension is registered. Review and expand deny list. Test bypass patterns.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Adding New Audit Domains
|
|
272
|
+
|
|
273
|
+
To extend this audit with new domains, follow this pattern:
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
## Domain N: [Name]
|
|
277
|
+
|
|
278
|
+
**Check:** [What to examine and which commands/files to inspect]
|
|
279
|
+
|
|
280
|
+
**Baseline:** [What secure configuration looks like]
|
|
281
|
+
|
|
282
|
+
**CRITICAL/HIGH/MEDIUM if:** [Specific conditions for each severity]
|
|
283
|
+
|
|
284
|
+
**Remediation:** [Specific steps to fix each finding]
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Register the new domain in the audit loop and assign a domain number for tracking.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Output Template
|
|
292
|
+
|
|
293
|
+
After completing all 12 domain checks, present the full report:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
# Security Audit Report
|
|
297
|
+
Generated: [timestamp]
|
|
298
|
+
Workspace: [workspace path]
|
|
299
|
+
|
|
300
|
+
[Individual domain findings, sorted by severity]
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
Summary: N critical, N high, N medium, N passed (out of 12 domains)
|
|
304
|
+
|
|
305
|
+
## Recommended Priority Actions
|
|
306
|
+
1. [Most critical remediation]
|
|
307
|
+
2. [Second most critical]
|
|
308
|
+
3. [Third most critical]
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**IMPORTANT:** This audit is read-only. Never modify configuration files, change permissions, or alter settings during the audit. Only report findings and recommend remediations for the user to apply.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Self-Evolving Agent
|
|
2
|
+
## Pattern
|
|
3
|
+
1. User provides a high-level goal
|
|
4
|
+
2. Workflow Generator analyzes the goal, decomposes into subtasks
|
|
5
|
+
3. For each subtask, an agent is configured with appropriate role, tools, and prompt
|
|
6
|
+
4. Agents execute in the generated workflow order
|
|
7
|
+
5. Output verified (code extraction, test execution)
|
|
8
|
+
6. If verification fails, workflow is regenerated with adjustments
|
|
9
|
+
|
|
10
|
+
## Implementation
|
|
11
|
+
```typescript
|
|
12
|
+
// Goal → Workflow → Agents → Execution → Verification
|
|
13
|
+
const workflow = await generateWorkflow(goal); // LLM decomposes goal
|
|
14
|
+
const agents = await configureAgents(workflow); // Create agent per subtask
|
|
15
|
+
const output = await executeWorkflow(agents); // Run in order
|
|
16
|
+
const verified = await verify(output, goal); // Check against goal
|
|
17
|
+
if (!verified) {
|
|
18
|
+
// Adjust and retry
|
|
19
|
+
const feedback = await analyzeFailed(output, goal);
|
|
20
|
+
const revisedWorkflow = await generateWorkflow(goal, feedback);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Rules
|
|
25
|
+
- Generated workflows must be inspectable before execution
|
|
26
|
+
- Each generated agent has explicit scope boundaries
|
|
27
|
+
- Verification is mandatory (self-generated agents need more scrutiny, not less)
|
|
28
|
+
- Maximum 2 regeneration attempts before escalating to user
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Self-Improvement Loop
|
|
2
|
+
|
|
3
|
+
## Cycle: Generate -> Critique -> Revise
|
|
4
|
+
|
|
5
|
+
### Generate (Junior role)
|
|
6
|
+
Produce first draft. Good enough to critique, doesn't need to be perfect.
|
|
7
|
+
|
|
8
|
+
### Critique (Senior role)
|
|
9
|
+
Evaluate against rubric. Score each dimension 1-5 with reasoning BEFORE the score (prevents anchoring). Provide specific, actionable feedback.
|
|
10
|
+
|
|
11
|
+
### Revise
|
|
12
|
+
Incorporate feedback. Address each critique point. Produce improved version.
|
|
13
|
+
|
|
14
|
+
### Loop
|
|
15
|
+
Repeat until quality threshold met (4+ on all dimensions) or 3 iterations. Diminishing returns after 3 rounds.
|
|
16
|
+
|
|
17
|
+
## Rubric Dimensions
|
|
18
|
+
|
|
19
|
+
| Dimension | 1 (Poor) | 3 (OK) | 5 (Excellent) |
|
|
20
|
+
|-----------|----------|--------|---------------|
|
|
21
|
+
| Accuracy | Errors present | Mostly correct | Fully correct |
|
|
22
|
+
| Completeness | Major gaps | Covers basics | Comprehensive |
|
|
23
|
+
| Clarity | Confusing | Understandable | Crystal clear |
|
|
24
|
+
| Actionability | No next steps | Some guidance | Specific steps |
|
|
25
|
+
|
|
26
|
+
## Output Format
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
## Iteration 1
|
|
30
|
+
### Draft
|
|
31
|
+
[Generated content]
|
|
32
|
+
|
|
33
|
+
### Critique
|
|
34
|
+
**Accuracy**: [reasoning] -> Score: [N/5]
|
|
35
|
+
**Completeness**: [reasoning] -> Score: [N/5]
|
|
36
|
+
**Clarity**: [reasoning] -> Score: [N/5]
|
|
37
|
+
**Actionability**: [reasoning] -> Score: [N/5]
|
|
38
|
+
**Specific feedback**: [actionable improvements]
|
|
39
|
+
|
|
40
|
+
### Revision
|
|
41
|
+
[Revised content addressing each critique point]
|
|
42
|
+
|
|
43
|
+
## Iteration 2
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
## Final Output
|
|
47
|
+
[Best version with scores]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Persistent Learning
|
|
51
|
+
|
|
52
|
+
Save high-quality final outputs (score 4+) as reference examples. Future tasks can reference these examples for consistent quality.
|
|
53
|
+
|
|
54
|
+
## Rules
|
|
55
|
+
|
|
56
|
+
- Critique must be specific ("paragraph 3 lacks evidence" not "needs improvement")
|
|
57
|
+
- Each revision must address every critique point
|
|
58
|
+
- Stop after 3 iterations regardless (diminishing returns)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: semantic-search
|
|
3
|
+
description: "Use this skill when implementing embedding-based search, vector similarity, RAG pipelines, or search relevance tuning. Triggers: 'semantic search', 'embeddings', 'vector search', 'similarity search', 'RAG', 'retrieval augmented', 'pgvector', or requests involving meaning-based content retrieval."
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Semantic Search
|
|
8
|
+
|
|
9
|
+
## What This Skill Does
|
|
10
|
+
|
|
11
|
+
Implement embedding-based search for meaning-aware content retrieval. Vector storage, similarity computation, hybrid search (vector + keyword), and relevance tuning.
|
|
12
|
+
|
|
13
|
+
## Architecture
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Query -> Embed -> Vector Search -> Rerank -> Return Results
|
|
17
|
+
|
|
|
18
|
+
Vector Store (pgvector)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## pgvector Setup
|
|
22
|
+
|
|
23
|
+
```sql
|
|
24
|
+
CREATE EXTENSION IF NOT EXISTS vector;
|
|
25
|
+
|
|
26
|
+
CREATE TABLE documents (
|
|
27
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
28
|
+
content TEXT NOT NULL,
|
|
29
|
+
embedding vector(1536), -- Dimension matches your model
|
|
30
|
+
metadata JSONB DEFAULT '{}',
|
|
31
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE INDEX idx_documents_embedding
|
|
35
|
+
ON documents USING ivfflat (embedding vector_cosine_ops)
|
|
36
|
+
WITH (lists = 100);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Search Query
|
|
40
|
+
|
|
41
|
+
```sql
|
|
42
|
+
SELECT id, content, metadata,
|
|
43
|
+
1 - (embedding <=> $1::vector) AS similarity
|
|
44
|
+
FROM documents
|
|
45
|
+
WHERE 1 - (embedding <=> $1::vector) > 0.7
|
|
46
|
+
ORDER BY embedding <=> $1::vector
|
|
47
|
+
LIMIT 10;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Hybrid Search (Vector + Keyword)
|
|
51
|
+
|
|
52
|
+
```sql
|
|
53
|
+
-- RRF (Reciprocal Rank Fusion) combining vector and full-text search
|
|
54
|
+
WITH vector_results AS (
|
|
55
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> $1::vector) AS rank
|
|
56
|
+
FROM documents LIMIT 20
|
|
57
|
+
),
|
|
58
|
+
text_results AS (
|
|
59
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank(tsv, query) DESC) AS rank
|
|
60
|
+
FROM documents, plainto_tsquery($2) query
|
|
61
|
+
WHERE tsv @@ query LIMIT 20
|
|
62
|
+
)
|
|
63
|
+
SELECT COALESCE(v.id, t.id) AS id,
|
|
64
|
+
COALESCE(1.0/(60+v.rank), 0) + COALESCE(1.0/(60+t.rank), 0) AS rrf_score
|
|
65
|
+
FROM vector_results v FULL JOIN text_results t ON v.id = t.id
|
|
66
|
+
ORDER BY rrf_score DESC LIMIT 10;
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Rules
|
|
70
|
+
|
|
71
|
+
- Chunk documents by semantic boundaries (paragraphs, sections), not fixed token counts
|
|
72
|
+
- Store chunk metadata (source, page, section) for attribution
|
|
73
|
+
- Set a similarity threshold (0.7+ for most use cases) to filter irrelevant results
|
|
74
|
+
- Use hybrid search (vector + keyword) for better recall than either alone
|
|
75
|
+
- Rerank results with a cross-encoder for precision-critical applications
|
|
76
|
+
- Monitor search quality with user feedback signals
|
|
77
|
+
|
|
78
|
+
## Corrective RAG (Self-Correcting Retrieval)
|
|
79
|
+
|
|
80
|
+
After retrieving results, grade their relevance before generating an answer:
|
|
81
|
+
1. Retrieve top-K results from vector store
|
|
82
|
+
2. Grade each result: RELEVANT or IRRELEVANT (lightweight LLM call or heuristic)
|
|
83
|
+
3. If majority IRRELEVANT: fall back to web search
|
|
84
|
+
4. Generate answer from best available sources (vector results + web results)
|
|
85
|
+
5. Never serve an answer from irrelevant retrievals
|
|
86
|
+
|
|
87
|
+
## Multi-Source Routing
|
|
88
|
+
|
|
89
|
+
When multiple knowledge bases exist, classify the query first:
|
|
90
|
+
- Technical questions -> code documentation store
|
|
91
|
+
- Business questions -> internal docs store
|
|
92
|
+
- General questions -> web search
|
|
93
|
+
- Ambiguous -> query multiple sources, merge with reciprocal rank fusion (RRF)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# SEO Audit Team
|
|
2
|
+
## Pipeline
|
|
3
|
+
1. **Page Auditor**: scrape target URL, extract structural audit (headings, meta tags, images, links, page speed indicators, keyword density)
|
|
4
|
+
2. **SERP Analyst**: search the primary keyword, analyze top-ranking competitors (what they do differently)
|
|
5
|
+
3. **Optimization Advisor**: synthesize audit + SERP data into prioritized recommendations
|
|
6
|
+
|
|
7
|
+
## Output: Prioritized Report
|
|
8
|
+
```markdown
|
|
9
|
+
## Page Audit: [URL]
|
|
10
|
+
|
|
11
|
+
### Critical Issues (fix immediately)
|
|
12
|
+
1. [Issue with specific fix]
|
|
13
|
+
|
|
14
|
+
### High Priority (fix this week)
|
|
15
|
+
1. [Issue with specific fix]
|
|
16
|
+
|
|
17
|
+
### Opportunities (competitive advantages to gain)
|
|
18
|
+
1. [Opportunity with implementation guidance]
|
|
19
|
+
|
|
20
|
+
### Already Good
|
|
21
|
+
[Things the page does well]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Rules
|
|
25
|
+
- Every recommendation includes a specific fix, not just the problem
|
|
26
|
+
- Prioritize by impact on rankings
|
|
27
|
+
- Compare against actual SERP competitors, not generic best practices
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo-optimization
|
|
3
|
+
description: "Use this skill when the user asks about SEO, search engine optimization, keyword research, meta tags, content structure for search, or improving search rankings. Triggers: 'SEO', 'search engine', 'keywords', 'meta tags', 'Google ranking', 'search traffic', 'organic traffic', or requests to improve content discoverability."
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO Optimization
|
|
8
|
+
|
|
9
|
+
## What This Skill Does
|
|
10
|
+
|
|
11
|
+
Optimize content and pages for search engines. Keyword strategy, on-page SEO, meta tags, content structure, technical SEO basics.
|
|
12
|
+
|
|
13
|
+
## On-Page SEO Checklist
|
|
14
|
+
|
|
15
|
+
- Title tag: 50-60 characters, primary keyword near the front
|
|
16
|
+
- Meta description: 150-160 characters, includes keyword, compelling
|
|
17
|
+
- H1: one per page, includes primary keyword
|
|
18
|
+
- H2-H3: include secondary keywords naturally
|
|
19
|
+
- URL: short, hyphenated, includes keyword
|
|
20
|
+
- First 100 words: include primary keyword
|
|
21
|
+
- Image alt text: descriptive, includes keyword where natural
|
|
22
|
+
- Internal links: 2-5 per page to related content
|
|
23
|
+
- External links: 1-3 to authoritative sources
|
|
24
|
+
|
|
25
|
+
## Content Structure for Search
|
|
26
|
+
|
|
27
|
+
- Answer the search query in the first 2 paragraphs (featured snippet targeting)
|
|
28
|
+
- Use question-based subheadings ("How to...", "What is...", "Why does...")
|
|
29
|
+
- Include a table of contents for long content
|
|
30
|
+
- Lists and tables for scannable information
|
|
31
|
+
- 1500+ words for competitive topics, 800+ for niche topics
|
|
32
|
+
|
|
33
|
+
## Technical SEO
|
|
34
|
+
|
|
35
|
+
- Page speed: under 3 seconds load time
|
|
36
|
+
- Mobile-friendly: responsive design, touch targets 44px+
|
|
37
|
+
- HTTPS: mandatory
|
|
38
|
+
- Canonical URLs to prevent duplicate content
|
|
39
|
+
- Structured data (JSON-LD) for rich snippets
|
|
40
|
+
- XML sitemap submitted to search console
|
|
41
|
+
- robots.txt configured correctly
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- Write for users first, optimize for search second
|
|
46
|
+
- One primary keyword per page, 2-4 secondary keywords
|
|
47
|
+
- Never keyword stuff (use natural language)
|
|
48
|
+
- Update old content rather than creating duplicate pages
|
|
49
|
+
- Monitor rankings and adjust strategy quarterly
|