MCP HubMCP Hub
Вернуться к навыкам

dev:release

raphaelchristi
Обновлено 6 days ago
27
4
27
Посмотреть на GitHub
Метаgeneral

О программе

Навык dev:release автоматизирует полный цикл выпуска программного обеспечения, когда пользователи упоминают публикацию или изменение версий. Он управляет определением версии, обновлением журнала изменений, созданием Git-тегов, релизами на GitHub и публикацией в npm через интерактивный процесс. Навык активируется командами типа "release", "publish" или "bump version" и поддерживает инкрементальные обновления версий: patch/minor/major.

Быстрая установка

Claude Code

Рекомендуется
Основной
npx skills add raphaelchristi/harness-evolver -a claude-code
Команда плагинаАльтернативный
/plugin add https://github.com/raphaelchristi/harness-evolver
Git клонированиеАльтернативный
git clone https://github.com/raphaelchristi/harness-evolver.git ~/.claude/skills/dev:release

Скопируйте и вставьте эту команду в Claude Code для установки этого навыка

Документация

/dev:release

Interactive release workflow for harness-evolver. Handles everything: validation, changelog, version bump, git tag, GitHub release, npm publish.

Step 1: Determine Version Bump

Parse the argument if provided (patch, minor, major). If not provided, ask:

{
  "questions": [
    {
      "question": "Version bump type?",
      "header": "Bump",
      "multiSelect": false,
      "options": [
        {"label": "patch", "description": "Bug fixes, small changes (e.g., 4.0.2 → 4.0.3)"},
        {"label": "minor", "description": "New features, backwards compatible (e.g., 4.0.2 → 4.1.0)"},
        {"label": "major", "description": "Breaking changes (e.g., 4.0.2 → 5.0.0)"}
      ]
    }
  ]
}

Step 2: Read Current State

# Current version
CURRENT=$(python3 -c "import json; print(json.load(open('package.json'))['version'])")
echo "Current version: $CURRENT"

# Commits since last tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
    echo "Commits since $LAST_TAG:"
    git log --oneline "$LAST_TAG"..HEAD
else
    echo "No previous tags found"
    git log --oneline -10
fi

Step 3: Compute New Version

Based on the bump type and current version, compute the new version. For example:

  • patch: 4.0.2 → 4.0.3
  • minor: 4.0.2 → 4.1.0
  • major: 4.0.2 → 5.0.0
python3 -c "
v = '$CURRENT'.split('.')
bump = '$BUMP_TYPE'
if bump == 'major':
    v = [str(int(v[0])+1), '0', '0']
elif bump == 'minor':
    v = [v[0], str(int(v[1])+1), '0']
else:
    v = [v[0], v[1], str(int(v[2])+1)]
print('.'.join(v))
"

Step 4: Generate Changelog Entry

Read the commits since the last tag. Categorize them:

  • feat: → Added
  • fix: → Fixed
  • refactor: → Changed
  • docs: → (skip unless significant)
  • chore: → (skip unless version bump)

Write a new ## [NEW_VERSION] - YYYY-MM-DD section at the top of CHANGELOG.md (after the header, before the previous version entry). Follow Keep a Changelog format. Use the commit messages as a starting point but rewrite them to be user-facing — explain what changed for the user, not what files were touched.

Show the generated changelog entry to the user before proceeding.

Step 5: Bump Version

Update version in both files:

# package.json
python3 -c "
import json
with open('package.json') as f: p = json.load(f)
p['version'] = '$NEW_VERSION'
with open('package.json', 'w') as f: json.dump(p, f, indent=2); f.write('\n')
"

# .claude-plugin/plugin.json
python3 -c "
import json
with open('.claude-plugin/plugin.json') as f: p = json.load(f)
p['version'] = '$NEW_VERSION'
with open('.claude-plugin/plugin.json', 'w') as f: json.dump(p, f, indent=2); f.write('\n')
"

Step 6: Commit, Tag, Push

git add CHANGELOG.md package.json .claude-plugin/plugin.json
git commit -m "chore: bump version to $NEW_VERSION

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>"

git tag -a "v$NEW_VERSION" -m "v$NEW_VERSION"
git push origin main --tags

Step 7: Create GitHub Release

Generate release notes from the changelog entry. Use gh release create:

gh release create "v$NEW_VERSION" \
    --title "v$NEW_VERSION — {short title from changelog}" \
    --notes "{release notes from changelog entry}

Full changelog: https://github.com/raphaelchristi/harness-evolver/blob/main/CHANGELOG.md"

Step 8: Publish to npm

npm publish

Verify the published version:

npm view harness-evolver version

Step 9: Report

Release v{NEW_VERSION} complete:
  - CHANGELOG.md updated
  - package.json + plugin.json bumped
  - Git tag v{NEW_VERSION} created and pushed
  - GitHub release: {release_url}
  - npm: harness-evolver@{NEW_VERSION} published

GitHub репозиторий

raphaelchristi/harness-evolver
Путь: .claude/skills/dev-release
0
agent-evolutionclaude-code-plugincodex-skillsharness-engineeringmeta-harness

Похожие навыки

content-collections

Мета

Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.

Просмотреть навык

polymarket

Мета

Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.

Просмотреть навык

creating-opencode-plugins

Мета

Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.

Просмотреть навык

sglang

Мета

SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

Просмотреть навык