Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
speckit-companion-after-converge
speckit-companion-after-converge
monicahq/laravel-cloudflare
claude-code
php
laravel
cloudflare
proxies

Capture converge finish (currentStep=converge, status unchanged) into .spec-context.json for the Companion GUI

Install
php artisan boost:add-skill monicahq/laravel-cloudflare

Save this content to: .claude/skills/speckit-companion-after-converge/SKILL.md

# Capture Converge Finish

Record the finish of the active feature's converge run into `.spec-context.json` so the SpecKit Companion GUI shows how long converge took. This command runs as the `after_converge` lifecycle hook and only writes state; the convergence check itself is the core `speckit.converge` workflow.

## Prerequisites

- Verify Python is available by running `python3 --version`.
- If `python3` is not available, warn the user and skip the capture: `[companion] Warning: python3 not detected; skipped .spec-context.json capture`. Do not fail the host command.

## Execution

Run the writer script from the repository root:

```bash
python3 .specify/extensions/companion/scripts/write-context.py --step converge --kind complete --by extension
```

There is no `--status`: converge owns no status and never moves the spec's status. When converge appends convergence tasks to `tasks.md`, the spec stays `implemented` while you work them, and the status command points at the next one. The finish is idempotent, so a re-fired hook never records a second one.

The script resolves the active feature directory on its own, in this order: `--feature-dir`, `SPECIFY_FEATURE_DIRECTORY` env, `SPECIFY_FEATURE` env, `.specify/feature.json`, current git branch prefix.

If you already know the feature directory, pass it explicitly so resolution is unambiguous:

```bash
python3 .specify/extensions/companion/scripts/write-context.py --feature-dir specs/<NNN>-<slug> --step converge --kind complete --by extension
```

## Graceful Degradation

The script is best-effort and never fails the host command:
- If `python3` is missing, skip with the warning above.
- If the active feature directory cannot be resolved, the script prints a warning to stderr and exits 0 without writing.
- If the spec is already `completed` or `archived`, nothing is written.

## Output

On success the script prints the path it updated and the values written, e.g. `[companion] Updated specs/<NNN>-<slug>/.spec-context.json (currentStep=converge, status=unchanged, kind=complete, by=extension)`. The write is atomic and appends to `history[]` without rewriting existing entries.

Capture Converge Finish

Record the finish of the active feature's converge run into .spec-context.json so the SpecKit Companion GUI shows how long converge took. This command runs as the after_converge lifecycle hook and only writes state; the convergence check itself is the core speckit.converge workflow.

Prerequisites

  • Verify Python is available by running python3 --version.
  • If python3 is not available, warn the user and skip the capture: [companion] Warning: python3 not detected; skipped .spec-context.json capture. Do not fail the host command.

Execution

Run the writer script from the repository root:

python3 .specify/extensions/companion/scripts/write-context.py --step converge --kind complete --by extension

There is no --status: converge owns no status and never moves the spec's status. When converge appends convergence tasks to tasks.md, the spec stays implemented while you work them, and the status command points at the next one. The finish is idempotent, so a re-fired hook never records a second one.

The script resolves the active feature directory on its own, in this order: --feature-dir, SPECIFY_FEATURE_DIRECTORY env, SPECIFY_FEATURE env, .specify/feature.json, current git branch prefix.

If you already know the feature directory, pass it explicitly so resolution is unambiguous:

python3 .specify/extensions/companion/scripts/write-context.py --feature-dir specs/<NNN>-<slug> --step converge --kind complete --by extension

Graceful Degradation

The script is best-effort and never fails the host command:

  • If python3 is missing, skip with the warning above.
  • If the active feature directory cannot be resolved, the script prints a warning to stderr and exits 0 without writing.
  • If the spec is already completed or archived, nothing is written.

Output

On success the script prints the path it updated and the values written, e.g. [companion] Updated specs/<NNN>-<slug>/.spec-context.json (currentStep=converge, status=unchanged, kind=complete, by=extension). The write is atomic and appends to history[] without rewriting existing entries.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast