소스 정보
- 저장소
- NovusEdge/palpatine
- 최근 소스 활동
- 2026년 6월 23일 21:20
- 감지된 SKILL.md 언어
- 영어
- 스타
- 106
- 포크
- 7
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/NovusEdge/palpatine --skill adversary명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
High-functioning predator. Pattern recognition without sentiment. People are systems. Outcomes are all that matter.
Self-terminating recursive orchestrator. Dispatches waves of subagents until a verifiable done-condition passes or the budget caps. Power with a kill-switch.
Quick reference for the Art of Seduction. Seducer types, 24-step process, anti-seducer traits.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | adversary |
| description | Subagent orchestration for sophisticated opponent modeling and multi-party analysis. |
Invoked via /palpatine:adversary or auto-triggered for:
Use subagents when:
Don't use subagents when:
Use JSON schemas for structured output — no parsing, automatic validation.
// Single adversary response
const ADVERSARY_SCHEMA = {
type: "object",
properties: {
counter: {
type: "string",
description: "Their response move, not reasoning"
},
exploits: {
type: "array",
items: { type: "string" },
maxItems: 3,
description: "Target weaknesses they'd hit"
},
escalation: {
type: "string",
description: "How they escalate if resisted"
},
weakPoint: {
type: "string",
description: "Where they're exposed"
}
},
required: ["counter", "exploits", "escalation", "weakPoint"]
}
// Multi-party player analysis
const PLAYER_SCHEMA = {
type: "object",
properties: {
move: { type: "string" },
alliance: {
type: "string",
description: "Who they side with and why it serves them"
},
threat: {
type: "string",
description: "How they could hurt target"
},
price: {
type: "string",
description: "Cost to neutralize or buy them off"
},
threatLevel: {
type: "string",
enum: ["high", "medium", "low"]
}
},
required: ["move", "alliance", "threat", "price", "threatLevel"]
}
Spawn one agent for focused opponent modeling:
Agent({
description: "Adversary: [role]",
prompt: `Model [OPPONENT] as ruthless rational actor.
OPPONENT: [role/name]
GOALS: [what they want — specific]
RESOURCES: [leverage, relationships, info, authority]
CONSTRAINTS: [what stops them from going nuclear]
TARGET is about to: [user's planned move]
Assume competent and self-interested. What's their counter-move?
Return: counter move, exploits they'd hit, escalation path, their weak point.
No caveats. Most likely play, stated cold.`,
schema: ADVERSARY_SCHEMA
})
Spawn all players simultaneously — they're independent analyses:
const players = [
{ name: "CEO", goals: "...", leverage: "..." },
{ name: "HR Director", goals: "...", leverage: "..." },
{ name: "Skip-level", goals: "...", leverage: "..." }
];
// All agents run in parallel
const results = await Promise.all(players.map(p =>
Agent({
description: `Player: ${p.name}`,
prompt: `Model ${p.name} as self-interested actor.
PLAYER: ${p.name}
GOALS: ${p.goals}
LEVERAGE: ${p.leverage}
SITUATION: [current state]
What's their move? Who do they ally with? How might they hurt target? What buys them off?
Assume competence and selfishness.`,
schema: PLAYER_SCHEMA
})
));
After parallel agents return, synthesize in main context:
## The Board
| Player | Move | Threat | Exploitable |
|--------|------|--------|-------------|
| CEO | [from results] | high | [weakPoint] |
| HR | [from results] | medium | [weakPoint] |
| Skip | [from results] | low | [weakPoint] |
**Alliances:**
- [CEO] ↔ [HR]: [shared interest]
- [Skip-level] isolated: [why]
**Optimal path:** [user's route through]
**Who to neutralize first:** [priority target]
**Who to recruit:** [potential ally + price]
When each turn depends on prior response, run sequentially:
let state = { situation: "...", history: [] };
for (let turn = 0; turn < 4; turn++) {
const response = await Agent({
description: `Wargame turn ${turn + 1}`,
prompt: `Prior history: ${JSON.stringify(state.history)}
User's move: ${userMove}
Opponent: [role] with goals [X] and leverage [Y]
What's opponent's counter-move this turn?`,
schema: ADVERSARY_SCHEMA
});
state.history.push({ user: userMove, opponent: response.counter });
// Present turn, get user's next move or synthesize endgame
}
Agents return data. Main context does:
Don't duplicate work — if agent returned it, use the data, don't re-analyze.
User: "Model how my team will react if I announce I'm leaving for a competitor"
Execution:
## The Board
| Player | Move | Threat | Price |
|--------|------|--------|-------|
| Manager | Counteroffer + guilt | medium | Will match offer |
| Skip-level | Fast-track promotion | high | Needs you for Q4 |
| Peer A | Jealousy, distance | low | Nothing — self-interest |
| Peer B | "Take me with you" | none | Intel on competitor |
| HR | Exit interview fishing | low | Standard process |
**Alliance:** Manager + Skip aligned to retain you
**Threat:** None high enough to block — clean exit available
**Leverage:** Skip's Q4 dependency = negotiating room if you want to stay
**Play:**
1. Announce to manager first, privately
2. Have counteroffer number ready
3. Don't mention competitor by name initially
4. Skip-level conversation within 24h before manager frames it
*"Everything is proceeding as I have foreseen."*