技能详情(站内镜像,无评论)
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.1.0
统计:⭐ 0 · 212 · 0 current installs · 0 all-time installs
⭐ 0
安装量(当前) 0
🛡 VirusTotal :良性 · OpenClaw :可疑
Package:abstrct/structs-reconnaissance
安全扫描(ClawHub)
- VirusTotal :良性
- OpenClaw :可疑
OpenClaw 评估
The skill's instructions expect a local CLI and optionally direct database access and persistent storage, but the package metadata does not declare those dependencies or required credentials—this mismatch is suspicious and worth clarifying before installing.
目的
The skill's stated purpose (game reconnaissance) matches the instructions (query game entities, assess, persist intel). However the SKILL.md relies on a 'structsd' CLI and optionally a local PostgreSQL instance for fast queries, yet the registry metadata lists no required binaries, no install, and no credentials. The omission of 'structsd' (or instructions on how to obtain it) is an incoherence: a user enabling this skill would reasonably need…
说明范围
Instructions tell the agent to run many `structsd query structs ...` commands and to persist files under memory/intel/. They also provide raw SQL and explicitly encourage connecting to a local Guild Stack PostgreSQL instance. Those runtime actions access local executables, local disk, and potentially local DB sockets/credentials—resources outside the declared scope. The skill does not instruct contacting any external exfiltration endpoint, but…
安装机制
There is no install spec and no code files, which is low-risk from an installation perspective. That said, the skill implicitly requires external software ('structsd' CLI and optionally PostgreSQL) but does not provide an install method or declare them as required, creating an operational gap rather than an installation risk.
证书
The skill declares no required environment variables or credentials, yet its advanced workflow expects local DB access (PostgreSQL) and reading/writing persistent memory files. If PostgreSQL access is required, credentials or socket access would be needed but none are declared. This mismatch means the SKILL.md expects environmental privileges (local DB/filesystem/binary) that are not documented or scoped in metadata.
持久
The skill writes persistent intelligence files under memory/intel/ and updates dossiers and threat boards; that is consistent with its purpose but is persistent state written into the agent's memory. The skill is not marked always:true, and model invocation is allowed (default). Consider that persistent storage of scouting/intel is privacy-sensitive and increases the blast radius if the agent or memory store is exposed.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Structs Reconnaissance」。简介:Gathers intelligence on players, guilds, planets, and the galaxy in Structs. Us…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/abstrct/structs-reconnaissance/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: structs-reconnaissance
description: Gathers intelligence on players, guilds, planets, and the galaxy in Structs. Use when scouting enemy players, checking planet defenses, monitoring fleet movements, assessing guild strength, surveying the galaxy map, gathering intel before combat or raids, or updating competitive intelligence. Persists findings to memory/intel/.
---
# Structs Reconnaissance
## Procedure
1. **Query entities** — All via `structsd query structs [subcommand] [args]`:
- Self: `address [your-address]` — resolves your address to a player ID. A result of `1-0` means no player exists for that address.
- Players: `player [id]`, `player-all`
- Planets: `planet [id]`, `planet-all`, `planet-all-by-player [player-id]`, `planet-attribute [planet-id] [type]`, `planet-attribute-all`
- Structs: `struct [id]`, `struct-all`, `struct-attribute [id] [type]`, `struct-type [id]`, `struct-type-all`
- Fleets: `fleet [id]`, `fleet-all`, `fleet-by-index [index]`
- Guilds: `guild [id]`, `guild-all`, `guild-membership-application [id]`, `guild-membership-application-all`
- Energy: `reactor [id]`, `reactor-all`, `infusion [id]`, `infusion-all`, `infusion-all-by-destination [dest-id]`, `provider [id]`, `provider-all`, `agreement [id]`, `agreement-all`, `agreement-all-by-provider [provider-id]`
- Power: `allocation [id]`, `allocation-all`, `allocation-all-by-source [source-id]`, `allocation-all-by-destination [dest-id]`, `substation [id]`, `substation-all`
- Grid: `grid [id]`, `grid-all`
- Block: `block-height`
2. **Assess targets** — For players: structs, power capacity, fleet status (onStation = can build; away = raiding). For planets: ore remaining, defense structs, shield. For guilds: members, Central Bank status.
3. **Identify vulnerabilities** — Unrefined ore stockpile, power near capacity, undefended planet, fleet away (raiding).
4. **Persist intelligence** — After gathering, update:
- [memory/intel/players/{player-id}.md](https://structs.ai/memory/intel) — Player dossier (profile, behavior, vulnerabilities, relationship)
- [memory/intel/guilds/{guild-id}.md](https://structs.ai/memory/intel) — Guild profile (members, bank status, strengths, weaknesses)
- [memory/intel/territory.md](https://structs.ai/memory/intel) — Planet ownership, ore, defense levels
- [memory/intel/threats.md](https://structs.ai/memory/intel) — Threat board ranked by severity
## Commands Reference
| Entity | Query Command |
|--------|---------------|
| Address → Player | `structsd query structs address [address]` (returns player ID; `1-0` = nonexistent) |
| Player | `structsd query structs player [id]`, `player-all` |
| Planet | `structsd query structs planet [id]`, `planet-all`, `planet-all-by-player [player-id]` |
| Planet attribute | `structsd query structs planet-attribute [planet-id] [type]`, `planet-attribute-all` |
| Struct | `structsd query structs struct [id]`, `struct-all`, `struct-attribute [id] [type]` |
| Struct type | `structsd query structs struct-type [id]`, `struct-type-all` |
| Fleet | `structsd query structs fleet [id]`, `fleet-all`, `fleet-by-index [index]` |
| Guild | `structsd query structs guild [id]`, `guild-all` |
| Membership app | `structsd query structs guild-membership-application [id]`, `guild-membership-application-all` |
| Reactor | `structsd query structs reactor [id]`, `reactor-all` |
| Infusion | `structsd query structs infusion [id]`, `infusion-all`, `infusion-all-by-destination [dest-id]` |
| Provider | `structsd query structs provider [id]`, `provider-all` |
| Agreement | `structsd query structs agreement [id]`, `agreement-all`, `agreement-all-by-provider [provider-id]` |
| Allocation | `structsd query structs allocation [id]`, `allocation-all`, `allocation-all-by-source`, `allocation-all-by-destination` |
| Substation | `structsd query structs substation [id]`, `substation-all` |
| Grid | `structsd query structs grid [id]`, `grid-all` |
| Block height | `structsd query structs block-height` |
## Verification
- Re-query entity after action to confirm state change.
- Cross-reference: player → planet → struct → fleet for full picture.
- Block height confirms chain sync.
## Error Handling
- **Entity not found**: ID may be invalid or entity destroyed. Try `-all` variants to discover current IDs.
- **Stale data**: Query `block-height`; re-run queries if chain has progressed.
- **Missing intel files**: Create `memory/intel/players/`, `memory/intel/guilds/` if absent. Follow formats in [memory/intel/README](https://structs.ai/memory/intel/README).
## Intelligence Persistence Loop
1. Run reconnaissance queries for target(s).
2. Parse results: owner, structs, power, shield, fleet status, guild.
3. Write/update [memory/intel/players/](https://structs.ai/memory/intel), [memory/intel/guilds/](https://structs.ai/memory/intel) per [README](https://structs.ai/memory/intel/README) formats.
4. Update [memory/intel/territory.md](https://structs.ai/memory/intel) with planet ownership table.
5. Update [memory/intel/threats.md](https://structs.ai/memory/intel) with ranked threats and response notes.
6. Include "Last Updated" date in each file.
## PostgreSQL Queries (Advanced)
If the Guild Stack is running locally, all reconnaissance queries can be done in **< 1 second** via PostgreSQL instead of CLI. This is essential for combat automation, real-time threat monitoring, and galaxy-wide scouting.
Example -- find all players with stealable ore, ranked by amount:
```sql
SELECT p.id, p.guild_id, COALESCE(g_ore.val, 0) as ore
FROM structs.player p
JOIN structs.grid g_ore ON g_ore.object_id = p.id AND g_ore.attribute_type = 'ore'
WHERE g_ore.val > 0
ORDER BY g_ore.val DESC;
```
Example -- enemy fleet composition at a planet:
```sql
SELECT s.id, st.class_abbreviation, s.operating_ambit, st.unit_defenses
FROM structs.struct s
JOIN structs.struct_type st ON st.id = s.type
JOIN structs.fleet f ON f.id = s.location_id
WHERE f.location_id = '2-105' AND s.is_destroyed = false AND s.location_type = 'fleet';
```
**Important**: The `structs.grid` table is key-value, not columnar. See [knowledge/infrastructure/database-schema](https://structs.ai/knowledge/infrastructure/database-schema) for the grid pattern and more query examples.
For setup: [structs-guild-stack skill](https://structs.ai/skills/structs-guild-stack/SKILL)
## See Also
- [memory/intel/README](https://structs.ai/memory/intel/README) — Dossier formats, territory map, threat board
- [awareness/threat-detection](https://structs.ai/awareness/threat-detection) — Using intel for threats
- [awareness/opportunity-identification](https://structs.ai/awareness/opportunity-identification) — Spotting opportunities
- [knowledge/mechanics/combat](https://structs.ai/knowledge/mechanics/combat) — Raid mechanics, fleet status
- [playbooks/meta/reading-opponents](https://structs.ai/playbooks/meta/reading-opponents) — Soul type identification
- [structs-guild-stack skill](https://structs.ai/skills/structs-guild-stack/SKILL) — Guild Stack setup for PG access
- [knowledge/infrastructure/database-schema](https://structs.ai/knowledge/infrastructure/database-schema) — Full PG schema and query patterns