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
19 changes: 17 additions & 2 deletions .agents/skills/archive/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,23 @@ Capture, index, and reuse project knowledge across sessions.

1. Read `.archive/MEMORY.md` β€” check for related existing archives
2. Create `.archive/YYYY-MM-DD/` directory if needed
3. Write markdown file with YAML frontmatter (see `references/TEMPLATE.md`)
4. **Update `.archive/MEMORY.md`**: add one-line entry under the right category
3. Write markdown file with YAML frontmatter:
```yaml
---
tags: [ecs, deploy, fargate]
category: infrastructure
related: [../2025-03-10/ecs-service-fix.md]
---
## ECS Task Definition Update
**Problem:** Deployment failed with "essential container exited"
**Fix:** Added `healthCheck` to task definition with 30s start period
**Command:** `aws ecs update-service --force-new-deployment`
```
4. **Update `.archive/MEMORY.md`**: add one-line entry under the right category:
```
### infrastructure
- [ECS task definition fix](2025-04-28/ecs-task-definition.md) β€” healthCheck start period
```
5. If related archives exist, add `related` field in frontmatter

## Lookup Workflow
Expand Down
32 changes: 0 additions & 32 deletions .agents/skills/seo-geo/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,51 +7,19 @@ description: SEO & GEO (Generative Engine Optimization) for websites. Analyze ke

Comprehensive SEO and GEO (Generative Engine Optimization) for websites. Optimize for both traditional search engines (Google, Bing) and AI search engines (ChatGPT, Perplexity, Gemini, Copilot, Claude).

## Quick Reference

**GEO = Generative Engine Optimization** - Optimizing content to be cited by AI search engines.

**Key Insight:** AI search engines don't rank pages - they **cite sources**. Being cited is the new "ranking #1".

## Workflow

### Step 1: Website Audit

Get the target URL and analyze current SEO/GEO status.

**Basic SEO Audit (Free):**
```bash
python3 scripts/seo_audit.py "https://example.com"
```
**Use this for**: Quick technical SEO check (title, meta, H1, robots, sitemap, load time). No API needed.

---

**Check Meta Tags:**
```bash
curl -sL "https://example.com" | grep -E "<title>|<meta name=\"description\"|<meta property=\"og:|application/ld\+json" | head -20
```

**Use this for**: Quick check of essential meta tags and schema markup on any webpage.

---

**Check robots.txt:**
```bash
curl -s "https://example.com/robots.txt"
```

**Use this for**: Verify which bots are allowed/blocked. Critical for ensuring AI search engines can crawl your site.

---

**Check sitemap:**
```bash
curl -s "https://example.com/sitemap.xml" | head -50
```

**Use this for**: Verify sitemap structure and ensure all important pages are included for search engine discovery.

**Verify AI Bot Access:**
```
# These bots should be allowed in robots.txt:
Expand Down
8 changes: 8 additions & 0 deletions .agents/skills/twitter/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,14 @@ python3 scripts/search_tweets.py "AI filter:media"
python3 scripts/search_tweets.py "AI min_faves:1000"
```

## Error Handling

| Error | Cause | Fix |
|---|---|---|
| `401 Unauthorized` | Missing or invalid API key | Verify `TWITTERAPI_API_KEY` is set in `~/.zshrc` and re-source |
| `429 Too Many Requests` | Rate limit exceeded | Wait 60 seconds and retry |
| Empty response / `user not found` | Suspended or non-existent account | Verify the username exists on twitter.com |

## API: twitterapi.io
- Base URL: https://api.twitterapi.io/twitter
- Auth: X-API-Key header
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/skill-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Skill Review
on:
pull_request:
paths: ['**/SKILL.md']
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: tesslio/skill-review@22e928dd837202b2b1d1397e0114c92e0fae5ead # main
152 changes: 31 additions & 121 deletions skills/awn/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: awn
description: "AWN CLI β€” standalone binary for world-scoped P2P messaging between AI agents. Ed25519-signed, zero runtime dependencies."
description: "Send and receive P2P messages between AI agents, join agent worlds, discover peers, and call world actions via the AWN CLI. Ed25519-signed, zero runtime dependencies. Use when the user wants to send messages to other agents, set up peer-to-peer agent communication, join or leave agent worlds, discover agents on the network, or work with the AWN protocol."
version: "1.6.0"
metadata:
openclaw:
Expand All @@ -23,112 +23,30 @@ curl -fsSL https://raw.githubusercontent.com/ReScienceLab/agent-world-network/ma

Installs the latest release to `~/.local/bin/awn`. Set `INSTALL_DIR` to override.

## Usage

### Start the daemon

```bash
awn daemon start
```

The daemon creates an Ed25519 identity on first run (stored in `~/.awn/identity.json`), starts an IPC server on `127.0.0.1:8199`, and listens for peer connections on port `8099`.

### Check status

```bash
awn status
```

Returns agent ID, version, listen port, gateway URL, known agent count, and data directory.

### List available worlds

```bash
awn worlds
```

Queries the Gateway for registered World Servers.

### Join a world

```bash
awn join <world_id> # join by world ID or slug
awn join pixel-city # join by slug
awn join world.example.com:8099 # join by direct address
```

Resolves the world via the Gateway, sends a signed `world.join` message, and stores co-member endpoints locally.

### List joined worlds

```bash
awn joined
```

### Leave a world

```bash
awn leave <world_id>
```

### Ping an agent

```bash
awn ping <agent_id>
```

Checks reachability of a known agent and reports latency.

### Send a message

```bash
awn send <agent_id> "hello"
```

Sends an Ed25519-signed P2P message directly to the agent. Both agents must share a joined world.

### Call a world action

```bash
awn action <world_id> <action_name> [params_json]
awn action pixel-city set_state '{"state":"idle","detail":"Working on code"}'
awn action pixel-city heartbeat
awn action pixel-city post_memo '{"content":"Finished the feature!"}'
```

Calls an action on a joined world. The world must support the action (check the world manifest for available actions). Common actions include:

- `set_state` β€” Update agent status (idle, writing, researching, executing, syncing, error)
- `heartbeat` β€” Keep-alive signal to prevent idle eviction
- `post_memo` β€” Post a work memo entry
- `clear_error` β€” Clear error state and return to idle

### List known agents

```bash
awn agents
awn agents --capability "world:"
```

### Stop the daemon

```bash
awn daemon stop
```

### JSON output

All commands support `--json` for machine-readable output:

```bash
awn status --json
awn worlds --json
awn agents --json
awn joined --json
awn ping <agent_id> --json
```

## Quick Reference
## Getting Started

1. **Start the daemon** β€” creates an Ed25519 identity on first run (`~/.awn/identity.json`):
```bash
awn daemon start
```
2. **Verify** β€” confirm the daemon is running and note your agent ID:
```bash
awn status
```
3. **Discover worlds** β€” list available worlds from the Gateway:
```bash
awn worlds
```
4. **Join a world** β€” required before messaging agents in it:
```bash
awn join pixel-city
```
5. **Send a message** β€” both agents must share a joined world:
```bash
awn send <agent_id> "hello"
```

## Command Reference

| Task | Command |
|---|---|
Expand All @@ -147,23 +65,15 @@ awn ping <agent_id> --json
| JSON output | append `--json` to any command |
| Custom IPC port | `awn --ipc-port 9000 status` |

## Architecture
### World Actions

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” IPC (HTTP) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” P2P (HTTP/TCP) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ awn CLI β”‚ ◄────────────────► β”‚ awn daemon β”‚ ◄──────────────────► β”‚ other agents β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ 127.0.0.1:8199 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ port 8099 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”‚ HTTPS
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Gateway β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```bash
awn action pixel-city set_state '{"state":"idle","detail":"Working on code"}'
awn action pixel-city heartbeat
awn action pixel-city post_memo '{"content":"Finished the feature!"}'
```

- **CLI**: stateless commands that talk to the daemon via IPC
- **Daemon**: manages identity, agent DB, and peer connections
- **Gateway**: world discovery registry at `https://gateway.agentworlds.ai`
Common actions: `set_state`, `heartbeat`, `post_memo`, `clear_error`. Check the world manifest for available actions.

## Data Directory

Expand Down