AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL unreviewed MIT Self-run

Kimi Peer Writer

skill-tserentserenov-fmt-exocortex-template-kimi-peer-writer · by TserenTserenov

Peer-сессия DP.SC.154 где Kimi = писатель, Claude = напарник. Запускается простой фразой. Включает ОРЗ Opening и Closing, turn-loop, эскалации, Decision Gate (зафиксировать vs реализовать → ревью → проверить → задеплоить), отложенную финализацию и верификацию.

No reviews yet
0 installs
33 views
0.0% view→install

Install

$ agentstack add skill-tserentserenov-fmt-exocortex-template-kimi-peer-writer

Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
  • high Dangerous shell/eval execution.

What it can access

  • Network access Used
  • Filesystem access Used
  • Shell / process execution Used
  • Environment & secrets Used
  • 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.

View the full security report →

Reliability & compatibility

Not yet reviewed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Kimi Peer Writer? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Kimi Peer Writer (DP.SC.154)

Задача: $ARGUMENTS

> Архитектура: я (Kimi) = писатель, Claude = напарник. > Claude вызывается через claude-peer-adapter.sh напрямую — Bash tool, stdin pipe. > list_peer_statuses (Local Gateway) — координация файлов, не проверка доступности Claude CLI. > Gateway offline ≠ Claude недоступен.


When to use

Peer-сессия DP.SC.154 где Kimi = писатель, Claude = напарник. Запускается простой фразой. Включает ОРЗ Opening и Closing, turn-loop, эскалации, Decision Gate (зафиксировать vs реализовать → ревью → проверить → задеплоить), отложенную финализацию и верификацию.

Scope boundary — не подменяет решения, зарезервированные за пилотом (найдено 2026-07-07)

> Peer-сессия пригодна для: технических решений, дизайна, code review, поиска компромисса между подходами, подготовки кандидатов к решению. > НЕ пригодна для решений, которые процесс явно закрепляет за человеком (например, R15 Валидатор в /apply-captures — accept/reject/defer кандидатов знания; R1 Стратег — приоритеты месяца). Согласие двух агентов между собой — не решение пилота, даже единогласное и хорошо обоснованное. > > Если задача внутри пир-сессии требует такого решения — писатель обязан остановиться и спросить пилота напрямую в текущем чате (не через turn-файл), прежде чем фиксировать результат. См. .claude/skills/apply-captures/SKILL.md раздел «R15 = живой пилот, не агент» и ${IWE_GOVERNANCE_REPO:-DS-strategy}/inbox/bugs/bug-2026-07-07-r15-decisions-bypassed-pilot.md — прецедент, из-за которого добавлено это ограничение.

Шаг 0. Режим

Определить режим из $ARGUMENTS:

  • --list → прочитать ${IWE_GOVERNANCE_REPO:-DS-strategy}/sessions/00-index.md, вывести таблицу. Стоп.
  • --interrupt → перейти к Шагу 5 (interrupt-режим). Стоп после.
  • --finalize → перейти к Шагу 6 (finalize-режим). Стоп после.
  • Иначе → новая сессия, продолжать к Шагу 0б.

Шаг 0б. Открытие (WP Gate — только для новой сессии)

Найти WP по задаче: прочитать ${IWE_GOVERNANCE_REPO:-DS-strategy}/WP-REGISTRY.md (grep по ключевым словам) и ${IWE_GOVERNANCE_REPO:-DS-strategy}/current/WeekPlan W{N}.md.

Анонс пилоту:

Открываю peer-сессию (DP.SC.154)
Роль: Писатель (Kimi) | Напарник: Claude
Задача: 
РП: WP-NNN «» | или: не найден в плане
Метод: turn-loop ≤10 ходов | Модель напарника: Sonnet

Если РП не найден в плане недели → полный WP Gate Ритуал (memory/protocol-open.md §Сессия): объявить артефакт + дождаться подтверждения пилота → только после «да» переходить к Шагу 1.

Если РП найден → продолжать без ожидания.


Шаг 1. Инициализация

SESSIONS_DIR="$HOME/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/sessions"
TODAY=$(date +%Y-%m-%d)
MONTH=$(date +%Y-%m)
MONTH_DIR="$SESSIONS_DIR/$MONTH"
mkdir -p "$MONTH_DIR"
NUM=$(printf "%02d" $(( $(find "$MONTH_DIR" -maxdepth 1 -type d -name "${TODAY}-[0-9][0-9]-*" 2>/dev/null | wc -l | tr -d ' ') + 1 )))

Slug = первые 4 латинских слова из задачи строчными буквами через дефис (не-латиница и дата убираются). Никакой даты в slug — она уже в SESSION_ID. Если латиницы нет → session.

SESSION_ID="${TODAY}-${NUM}-${SLUG}" SESSION_DIR="${MONTH_DIR}/${SESSION_ID}"

1.1 Создать папку:

mkdir -p "$SESSION_DIR"

1.2 Записать meta.yaml (Write):

task_id: ""
date: ""
session_id: ""
start_time: ""
end_time: ""
writer_agent: "kimi-headless"
peer_agent: "claude-code"
peer_cmd: "claude-peer-adapter"
peer_model: "sonnet"
status: "started"
turns_count: 0
turns_limit: 10
escalations_count: 0
extensions: []
result_path: ""
task_description: ""
implementation_pipeline: false
review_iterations: 0
verify_status: ""
deploy_shas: {}
# Двухосная модель (WP-367 Ф5, DP.SC.154 v4):
roles: {}            # {agent_id: [DP.ROLE.NNN, ...]} после consensus в Opening
discovery_turns: 0   # сколько ходов ушло на role-discovery (не считается в turns_limit)
ad_hoc_roles: {}     # {role_name: {agent_id, rationale, first_used_turn}} — для каскада audit
swap_history: []     # [{turn, from, to, reason}] — журнал SWAP_WRITER переходов

Если пилот не назначил роли при запуске сессии — initiator (writer/Kimi) в ход 0 предлагает свою content-role и роль напарника (см. DP.SC.154 раздел «Opening сессии: Sequential role-discovery»). Discovery-ходы (0-2) не входят в turns_limit: 10.

In-session ad-hoc role signal (DP.SC.154 v4, каскад Pack-расширения уровень 1). При использовании ad-hoc роли (нет в Pack DP.ROLE.NNN/MIM.R.NNN/VR.R.NNN) Kimi-писатель обязан сразу объявить пилоту:

Беру ad-hoc роль «». В каталоге Pack такой нет.
Обязанности: . Метод: .
Предлагаю создать РП на формализацию (~30 мин).
Выбери:
  А. Создать сейчас → отдельный РП «pack-gap-».
  Б. Отложить → продолжу как ad-hoc, сторож напомнит при Week Close.

Запись в meta.yaml.ad_hoc_roles идёт независимо от выбора (для back-up уровня 2). При выборе А — после сессии писатель открывает отдельный РП.

1.3 Добавить строку в sessions/00-index.md сверху таблицы (первая строка таблицы после |---|):

|  |  |  | kimi / claude-code | 0 | 0 | started | — |

Шаг 2. Реплика писателя 00-writer.md

Записать ${SESSION_DIR}/00-writer.md (Write):

---
turn: 0
role: writer
agent_id: kimi-headless
timestamp: 
consensus: none
---

Показать пилоту краткое резюме: что написал в 00-writer.md.


Шаг 3. Turn loop

Переменные: TURN=1, ESCALATIONS=0, DONE=false.

3.1 Вызов Claude

Прочитать все предыдущие реплики из SESSION_DIR в порядке нумерации. Составить промпт:

КРИТИЧНО: Твоя задача — ТОЛЬКО написать одну peer-реплику в stdout с frontmatter.
Запрещено: редактировать файлы, делать commit, git push, создавать файлы в SESSION_DIR.
Весь твой ответ = одна реплика в stdout. Ничего больше.

Ты — напарник (peer agent) в диалоговой сессии (DP.SC.154).
Сессия: 
Ход:  из 10
Задача: 

Прочитай все файлы журнала в  по порядку (00-writer.md, 01-peer.md, ...).

Напиши реплику в stdout с frontmatter:
---
turn: 
role: peer
agent_id: claude-code
timestamp: 
consensus: none | proposed | reached | escalate
---

Правило критика: найди ХОТЯ БЫ ОДИН тезис или допущение писателя, с которым не согласен. Не сдавайся после первого возражения — держись аргументированно. Если всё действительно ОК — объясни почему конкретно, не просто «согласен».

Маркеры (строго в начале строки):
CONSENSUS:  — если считаешь что договорились
ESCALATE_TO_USER:  — если писатель игнорирует существенное возражение

Вызов Claude через Bash:

PEER_FILE="${SESSION_DIR}/$(printf '%02d' $TURN)-peer.md"
echo "" | bash "$HOME/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/scripts/claude-peer-adapter.sh" \
  --add-dir "$SESSION_DIR" \
  2>/dev/null > "$PEER_FILE"

Если файл пустой или exit ≠ 0 → сообщить пилоту: «Claude не ответил. Повторить или прервать?»

3.2 Показать пилоту

Прочитать $PEER_FILE. Вывести ключевые тезисы Claude (не всю реплику дословно — краткое резюме + цитаты ключевых позиций).

3.3 Проверить маркеры

ESCALATETOUSER: Если grep -q "^ESCALATE_TO_USER:" "$PEER_FILE":

  • Извлечь причину: grep "^ESCALATE_TO_USER:" "$PEER_FILE" | sed 's/^ESCALATE_TO_USER: //'
  • ESCALATIONS += 1
  • Записать ${SESSION_DIR}/escalation-$(printf '%02d' $((ESCALATIONS-1))).md:
---
escalation_number: 
turn: 
timestamp: 
reason: ""
pilot_response: ""
---

# Эскалация  (ход )

**Причина:** 
**Реплика Claude:** 
**Ответ пилота:** (ввести ниже)
  • Сообщить пилоту: «Claude эскалирует: . Нужно твоё решение.»
  • Дождаться ответа пилота, записать в pilot_response в escalation-файл.
  • Обновить meta.yaml: escalations_count: (Bash sed).

CONSENSUS: Если grep -q "^CONSENSUS:" "$PEER_FILE":

  • Извлечь резюме.
  • DONE=true, перейти к Шагу 3.5 (Decision Gate) — НЕ к Шагу 4 напрямую.

3.4 Реплика писателя

Если TURN >= 10DONE=true, перейти к Шагу 4.

Написать $(printf '%02d' $((TURN+1)))-writer.md (Write):

---
turn: 
role: writer
agent_id: kimi-headless
timestamp: 
consensus: none
---

TURN += 1 → вернуться к 3.1.


Шаг 3.5. Decision Gate (после консенсуса)

> Когда срабатывает: DONE=true через CONSENSUS-маркер в Шаге 3.3 (не через TURN >= 10 — там сразу Шаг 4). > Зачем: консенсус ≠ реализация. Это легитимный choice-question для пилота (выбор объёма работы, не yes/no на готовое решение). Исключение из P5 — пилот сам подтвердил: «здесь от меня нужно согласование» (триггер 2026-05-30, WP-367 Ф5). > Обязательно: перед запросом — краткое резюме консенсуса на пальцах, чтобы пилот мог осознанно выбрать. Запрос без резюме = механический «выберите А/Б» без понимания.

Извлечь резюме консенсуса (grep "^CONSENSUS:" "$PEER_FILE" | sed 's/^CONSENSUS: //').

Резюме на пальцах — обязательная часть. Формат (без технических терминов, кодов, путей):

Консенсус достигнут.

Что обсуждалось: 
К чему пришли: 
Что предлагается реализовать: 
Сколько займёт реализация: ~h (включая ревью + smoke + deploy)
Изменения у других пользователей: 

После резюме — choice question:

Что дальше?
  А. Только зафиксировать → Шаг 4 (report.md + commit + close).
     Реализация — отдельный РП/фаза при следующей сессии.
  Б. Реализовать сейчас → ревью → проверить → задеплоить → Шаг 4.

Дождаться ответа пилота. Записать выбор в meta.yaml (Bash sed):

implementation_pipeline: false | true
  • АIMPLEMENTATION=false, перейти к Шагу 4.
  • БIMPLEMENTATION=true, перейти к Шагу 3.6.

Default при молчании пилота: Б (реализация сейчас), per правило 11 «финиш > отлог». Применять только если пилот явно не ответил в течение разумного времени.

Triggers automatic-defer (без запроса пилоту — сразу А):

  1. Реализация требует нового РП (новый scope, не покрытый текущим РП).
  2. Требуется ArchGate (новое архитектурное решение системного уровня).
  3. Контекст полностью переключился (другая часть системы; нужен новый framing).

При срабатывании trigger — анонс пилоту с резюме (НЕ запрос), потом Шаг 4.


Шаг 3.6. Implementation Pipeline (опциональный)

> Активируется: только при IMPLEMENTATION=true в Шаге 3.5. > Принцип: Kimi-writer применяет решение → cold-context Claude через bash pipe делает code review → writer фиксит → Claude через bash pipe запускает smoke (writer не имеет Skill tool) → deploy → секция «Реализация и проверка» в report-draft.md. > Архитектурное ограничение: Kimi-headless не имеет Agent/Skill tools. Все вызовы внешних агентов идут через claude-peer-adapter.sh (stdin pipe) — это осознанная асимметрия с /peer-conversation.

3.6.1 Implementation

Анонс пилоту:

Реализация консенсуса 
Файлы: 
Репо: 
Метод: Edit/Write tools напрямую

Writer (Kimi) применяет изменения через Edit/Write. Запрещено:

  • Менять файлы вне анонсированного списка без нового анонса.
  • Делать commit на этом этапе (commit — только Шаг 3.6.5).

Зафиксировать список изменённых файлов в CHANGED_FILES (один путь на строку).

3.6.2 Code Review (cold-context через bash pipe)

Переменные итерации ревью: REVIEW_ITER=1 при первом входе, инкрементируется в 3.6.3.

Вызов Claude как code reviewer через тот же адаптер что для turn-loop:

: "${REVIEW_ITER:=1}"
REVIEW_FILE="${SESSION_DIR}/review-$(printf '%02d' "$REVIEW_ITER").md"
REVIEW_PROMPT=$(cat .
Ты — независимый ревьюер, не видевший диалога. Контекст ниже.

Резюме консенсуса: 

Изменённые файлы:

Прочитай каждый файл (используй Read tool через add-dir; для файлов вне SESSION_DIR — абсолютный путь).
Проверь по чек-листу:
1. asyncio runtime: ищи 'wait_for(coro)' без 'shield' → coroutine reuse. Fire-and-forget tasks читающие/пишущие одну строку БД из разных мест.
2. Shell ordering: function call ДО function definition. 'set -u' соблюдён?
3. SQL race: cross-file writers в одну строку без атомарности (UPDATE ... RETURNING / SELECT FOR UPDATE).
4. Lock enforcing: при collision — 'exit N' или 'log WARN && continue'? Если advisory — это intentional или баг?
5. Контекст-специфика консенсуса: .

Верни отчёт в формате:
## Critical (must fix before deploy)
- :  | fix: 
## High / ## Medium / ## OK

Не предлагай рефакторинг или стиль — только runtime баги и нарушения чек-листа.
EOF
)

echo "$REVIEW_PROMPT" | bash "$HOME/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/scripts/claude-peer-adapter.sh" \
  --add-dir "$SESSION_DIR" \
  --add-dir "" --add-dir "" \
  2>/dev/null > "$REVIEW_FILE"

--add-dir для каждого репо где есть изменённые файлы (иначе Claude не сможет их прочитать).

3.6.3 Review Outcome

Прочитать $REVIEW_FILE. Показать пилоту краткое резюме (Critical + High count + один пример).

Если есть Critical:

  • Применить фиксы (Edit) → REVIEW_ITER += 1 → вернуться к 3.6.2 (новый review-NN.md).
  • Лимит итераций: 3. На 3-й — ESCALATE_TO_USER: + escalation-NN.md.

Если только High/Medium:

  • Спросить пилота: «Есть N High и M Medium замечаний. Фиксить сейчас или после deploy?»
  • Записать в meta.yaml (review_iterations: , unresolved: ).

Если только OK:

  • Продолжить к 3.6.4.

3.6.4 Smoke Verification (через bash pipe к Claude)

Kimi-writer не имеет Skill tool — /verify вызывается через Claude как proxy:

VERIFY_FILE="${SESSION_DIR}/verify-01.md"
VERIFY_PROMPT=$(cat .

Изменённые файлы:

Инварианты консенсуса (что должно работать):

Используй встроенный /verify skill (Skill tool: skill=verify, args=...).
Если /verify не подходит (например, CLI-only без UI) — напиши и запусти точечный smoke (pytest fixture / curl call / минимальный python script).
Верни:
- PASS / FAIL
- При FAIL: traceback + первая строка-причина
- Команда которую запустил
EOF
)

echo "$VERIFY_PROMPT" | bash "$HOME/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/scripts/claude-peer-adapter.sh" \
  --add-dir "$SESSION_DIR" \
  --add-dir "" --add-dir "" \
  --permission-mode acceptEdits \
  2>/dev/null > "$VERIFY_FILE"

Результат:

  • PASS → перейти к 3.6.5.
  • FAIL → показать traceback пилоту, спросить «фиксить и повторить или escalate?»
  • «фиксить» → Edit → вернуться к 3.6.2 (review после фиксов) или 3.6.4 (если фикс точечный, по согласию пилота).
  • «escalate» → ESCALATETOUSER + escalation-NN.md.

3.6.5 Deploy

Для каждого репо в списке изменённых файлов:

cd 
git status --short
# pathspec после `--`: commit ТОЛЬКО свои файлы. Bare `git commit` сметает
# чужое pre-staged из общего индекса (mis-attribution, см. 2026-06-20-39).
git add 
git commit -m "(): 

Refs: peer-session 
Review iters: 
Verify: PASS" -- 
git push

Записать commit SHA для каждого репо в DEPLOY_SHAS (map: repo → sha).

Если push fail:

  • НЕ обходить хуки (--no-verify запрещён правилом 6 CLAUDE.md).
  • Зафиксировать в logs, показать пилоту, ESCALATETOUSER.

3.6.6 Outcome дополнение к report-draft.md

В ${SESSION_DIR}/_outcome.md (Write) — служебный файл для синтезатора:

## Реализация и проверка

**Изменённые файлы:**

**Code review итераций:** 
**Unresolved (отложено на потом):** 

**Smoke verification:** PASS | FAIL (с пометкой что fix'нули)

**Deploy:**
- : commit 
- : commit 

**Открытые задачи после deploy:** 

Этот файл будет включён синтезатором (Шаг 4.2) как обязательная секция при implementation_pipeline: true.


Шаг 4. Финализация

4.1 Обновить meta.yaml

TURNS_DONE=$(find "$SESSION_DIR" -maxdepth 1 -name "[0-9][0-9]-*.md" | wc -l | tr -d ' ')
END_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
tmpf=$(mktemp)
sed "s/^status:.*/status: \"completed\"/" "$SESSION_DIR/meta.yaml" |
  sed "s/^end_time:.*/end_time: \"$END_TIME\"/" |
  sed "s/^turns_count:.*/turns_count: $TURNS_DONE/" |
  sed "s/^escalations_count:.*/escalations_count: $ESCALATIONS/" > "$tmpf"
mv "$tmpf" "$SESSION_DIR/meta.yaml"

4.2 Синтез report-draft.md

> Архитектурное ограничение: Kimi-писатель использует bash pipe через claude-peer-adapter.sh, т.к. Kimi не имеет доступа к Claude Agent tool. Claude-писатель (скилл /peer-conversation) использует Agent tool — это осознанное раз

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.