cc-feedback
obsfx/cc-feedbackClaude Code плагин для разработчиков, которые хотят оставаться в контексте агентного кодинга. Находит аннотации @feedback в исходниках, реализует запрошенные изменения и оставляет @agent-response для ревью перед коммитом.
Установка
git clone https://github.com/obsfx/cc-feedback.gitREADME
feedbacks
Одна из главных вещей, которую я понял в процессе агентного кодинга — это необходимость оставаться в контексте и не терять нить происходящего.
Иногда агенты делают глупые и неэффективные вещи. Нужно вмешиваться вовремя, чтобы не наломать дров в будущем.
Всё встало на своё место после того, как я прочитал короткий пост от создателя Django.
Я всегда ищу способ добавить комментарии к работе агента и передать их ему до того, как что-то попадёт в git.
Так я разработал этот небольшой плагин для Claude Code. Он предельно прост.
Я добавляю аннотации // @feedback: прямо в редакторе, а агент их читает и отвечает на них.
Просто, без лишнего — и вполне достаточно для ревью и внесения правок.
Плагин для Claude Code, который находит аннотации @feedback в исходном коде и реализует запрошенные изменения.
Рабочий процесс
graph LR
A["Добавить @feedback комментарии"] --> B["/feedbacks:address"]
B --> C["Проверить изменения + @agent-response"]
C --> D["/feedbacks:resolve"]
D --> E["Чистый код → коммит"]Установка
# Добавить маркетплейс
claude plugin marketplace add obsfx/cc-feedback
# Установить плагин
claude plugin install feedbacksИли в интерактивном режиме Claude Code:
/plugin marketplace add obsfx/cc-feedback
/plugin install feedbacks
Как это работает
Расставьте комментарии @feedback в коде с описанием желаемых изменений. Плагин найдёт их, реализует изменения и оставит @agent-response для проверки.
До:
// @feedback: extract this into a reusable hook
export function Component() {
const [data, setData] = useState([]);
useEffect(() => { fetchData().then(setData); }, []);
return <List items={data} />;
}После:
// @feedback: extract this into a reusable hook
// @agent-response: extracted to hooks/useData.ts
export function Component() {
const data = useData();
return <List items={data} />;
}Поддерживаемые стили комментариев
Работает с синтаксисом комментариев любого языка:
| Стиль | Языки |
|---|---|
// @feedback: ... | JS, TS, Java, Go, C, Rust, Swift |
# @feedback: ... | Python, Ruby, Shell, YAML |
/* @feedback: ... */ | CSS, SCSS, C (блочный) |
<!-- @feedback: ... --> | HTML, XML, Vue |
-- @feedback: ... | SQL, Lua, Haskell |
Использование
Команда /feedbacks:address
Явно сканирует и обрабатывает все аннотации @feedback в кодовой базе:
/feedbacks:address
/feedbacks:address src/components/
- Находит все аннотации
@feedback - Пропускает уже обработанные (те, у которых есть
@agent-response) - Реализует каждое изменение
- Добавляет
@agent-response: <краткое описание>для проверки
Команда /feedbacks:list
Выводит список всех аннотаций @feedback с их статусом и ответами агента:
/feedbacks:list
/feedbacks:list src/components/
Команда /feedbacks:resolve
Удаляет все строки с аннотациями @feedback и @agent-response из кодовой базы, оставляя чистый код, готовый к коммиту:
/feedbacks:resolve
/feedbacks:resolve src/components/
Проактивное обнаружение
Плагин также включает агента, который замечает аннотации @feedback во время работы над другими задачами и предлагает их обработать.
Жизненный цикл аннотации
stateDiagram-v2
[*] --> Unaddressed : разработчик добавляет feedback
Unaddressed --> Addressed : агент реализует изменения и отвечает
Addressed --> Resolved : команда resolve удаляет аннотации
Resolved --> [*]Компоненты
| Компонент | Назначение |
|---|---|
/feedbacks:address | Сканировать и реализовать все feedback'и |
/feedbacks:list | Вывести все аннотации со статусом |
/feedbacks:resolve | Удалить аннотации для чистого коммита |
feedback-protocol skill | Знание протокола, автозагрузка при необходимости |
feedback-addresser agent | Автономный исполнитель, проактивное обнаружение |
Лицензия
MIT