Skip to content

Commit 2db3b18

Browse files
[composer] Restore consumer command discovery compatibility (#185) (#198)
* [composer] Restore consumer command discovery compatibility (#185) * [agents] Synchronize top-level packaged agent files (#185) * Update wiki submodule pointer for PR #198 * [tests] Narrow composer plugin fixture to tracked inputs (#185) * [sync] Preserve relative packaged symlink targets (#185) * [style] Separate command help from option chains (#185) * [style] Keep single-option command setup compact (#185) * [style] Wrap long command help strings (#185) * [refactor] Simplify symlink origin handling (#185) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
1 parent b30fc34 commit 2db3b18

36 files changed

Lines changed: 359 additions & 115 deletions

.github/wiki

Submodule wiki updated from 546706f to caa2be0

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919

2020
- Keep packaged `.agents` payloads exportable and synchronize packaged skills and agents with repository-relative symlink targets so consumer repositories no longer receive broken absolute machine paths (#188)
2121
- Rewrite drifted Git hooks by removing the previous target first, restore the intended `0o755` executable mode, and report unwritable hook replacements cleanly when `.git/hooks` stays locked (#190)
22+
- Keep Composer plugin command discovery compatible with consumer environments by moving unsupported Symfony Console named parameters out of command metadata/configuration and by decoupling the custom filesystem wrapper from Composer's bundled Symfony Filesystem signatures (#185)
2223

2324
## [1.20.0] - 2026-04-23
2425

src/Console/Command/AgentsCommand.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@
3535
*/
3636
#[AsCommand(
3737
name: 'agents',
38-
description: 'Synchronizes Fast Forward project agents into .agents/agents directory.',
39-
help: 'This command ensures the consumer repository contains linked Fast Forward project agents by creating symlinks to the packaged prompts and removing broken links.'
38+
description: 'Synchronizes Fast Forward project agents into .agents/agents directory.'
4039
)]
4140
final class AgentsCommand extends BaseCommand implements LoggerAwareCommandInterface
4241
{
@@ -63,6 +62,10 @@ public function __construct(
6362
*/
6463
protected function configure(): void
6564
{
65+
$this->setHelp(
66+
'This command ensures the consumer repository contains linked Fast Forward project agents by creating'
67+
. ' symlinks to the packaged prompts and removing broken links.'
68+
);
6669
$this->addJsonOption();
6770
}
6871

src/Console/Command/ChangelogCheckCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@
3535
*/
3636
#[AsCommand(
3737
name: 'changelog:check',
38-
description: 'Checks whether a changelog file contains meaningful unreleased entries.',
39-
help: 'This command validates the current Unreleased section and may compare it against a base git reference to enforce pull request changelog updates.'
38+
description: 'Checks whether a changelog file contains meaningful unreleased entries.'
4039
)]
4140
final class ChangelogCheckCommand extends BaseCommand implements LoggerAwareCommandInterface
4241
{
@@ -61,6 +60,11 @@ public function __construct(
6160
*/
6261
protected function configure(): void
6362
{
63+
$this->setHelp(
64+
'This command validates the current Unreleased section and may compare it against a base git'
65+
. ' reference to enforce pull request changelog updates.'
66+
);
67+
6468
$this->addJsonOption()
6569
->addOption(
6670
name: 'against',

src/Console/Command/ChangelogEntryCommand.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
*/
3939
#[AsCommand(
4040
name: 'changelog:entry',
41-
description: 'Adds a changelog entry to Unreleased or a specific version section.',
42-
help: 'This command appends one categorized changelog entry to the selected changelog file so it can be reused by local authoring flows and skills.'
41+
description: 'Adds a changelog entry to Unreleased or a specific version section.'
4342
)]
4443
final class ChangelogEntryCommand extends BaseCommand implements LoggerAwareCommandInterface
4544
{
@@ -64,6 +63,11 @@ public function __construct(
6463
*/
6564
protected function configure(): void
6665
{
66+
$this->setHelp(
67+
'This command appends one categorized changelog entry to the selected changelog file so it can be'
68+
. ' reused by local authoring flows and skills.'
69+
);
70+
6771
$this->addJsonOption()
6872
->addArgument(
6973
name: 'message',
@@ -76,10 +80,6 @@ protected function configure(): void
7680
mode: InputOption::VALUE_REQUIRED,
7781
description: 'The changelog category (added, changed, deprecated, removed, fixed, security).',
7882
default: 'added',
79-
suggestedValues: array_map(
80-
static fn(ChangelogEntryType $type): string => strtolower($type->value),
81-
ChangelogEntryType::ordered()
82-
),
8383
)
8484
->addOption(
8585
name: 'release',

src/Console/Command/ChangelogNextVersionCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@
3636
*/
3737
#[AsCommand(
3838
name: 'changelog:next-version',
39-
description: 'Infers the next semantic version from the Unreleased changelog section.',
40-
help: 'This command inspects Unreleased changelog categories and prints the next semantic version inferred from the current changelog state.'
39+
description: 'Infers the next semantic version from the Unreleased changelog section.'
4140
)]
4241
final class ChangelogNextVersionCommand extends BaseCommand implements LoggerAwareCommandInterface
4342
{
@@ -62,6 +61,11 @@ public function __construct(
6261
*/
6362
protected function configure(): void
6463
{
64+
$this->setHelp(
65+
'This command inspects Unreleased changelog categories and prints the next semantic version inferred'
66+
. ' from the current changelog state.'
67+
);
68+
6569
$this->addJsonOption()
6670
->addOption(
6771
name: 'file',

src/Console/Command/ChangelogPromoteCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
*/
3939
#[AsCommand(
4040
name: 'changelog:promote',
41-
description: 'Promotes Unreleased entries into a published changelog version.',
42-
help: 'This command moves the current Unreleased entries into a released version section, records the release date, and restores an empty Unreleased section.'
41+
description: 'Promotes Unreleased entries into a published changelog version.'
4342
)]
4443
final class ChangelogPromoteCommand extends BaseCommand implements LoggerAwareCommandInterface
4544
{
@@ -66,6 +65,11 @@ public function __construct(
6665
*/
6766
protected function configure(): void
6867
{
68+
$this->setHelp(
69+
'This command moves the current Unreleased entries into a released version section, records the'
70+
. ' release date, and restores an empty Unreleased section.'
71+
);
72+
6973
$this->addJsonOption()
7074
->addArgument(
7175
name: 'version',

src/Console/Command/ChangelogShowCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
*/
3838
#[AsCommand(
3939
name: 'changelog:show',
40-
description: 'Prints the notes body for a released changelog version.',
41-
help: 'This command renders the body of one released changelog section so it can be reused for GitHub release notes.'
40+
description: 'Prints the notes body for a released changelog version.'
4241
)]
4342
final class ChangelogShowCommand extends BaseCommand implements LoggerAwareCommandInterface
4443
{
@@ -63,6 +62,11 @@ public function __construct(
6362
*/
6463
protected function configure(): void
6564
{
65+
$this->setHelp(
66+
'This command renders the body of one released changelog section so it can be reused for GitHub'
67+
. ' release notes.'
68+
);
69+
6670
$this->addJsonOption()
6771
->addArgument(
6872
name: 'version',

src/Console/Command/CodeOwnersCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
*/
3838
#[AsCommand(
3939
name: 'codeowners',
40-
description: 'Generates .github/CODEOWNERS from local project metadata.',
41-
help: 'This command infers CODEOWNERS entries from composer.json metadata, falls back to a commented template, and supports drift-aware preview and overwrite flows.'
40+
description: 'Generates .github/CODEOWNERS from local project metadata.'
4241
)]
4342
final class CodeOwnersCommand extends BaseCommand implements LoggerAwareCommandInterface
4443
{
@@ -67,6 +66,11 @@ public function __construct(
6766
*/
6867
protected function configure(): void
6968
{
69+
$this->setHelp(
70+
'This command infers CODEOWNERS entries from composer.json metadata, falls back to a commented'
71+
. ' template, and supports drift-aware preview and overwrite flows.'
72+
);
73+
7074
$this->addJsonOption()
7175
->addOption(
7276
name: 'file',

src/Console/Command/CodeStyleCommand.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
*/
3939
#[AsCommand(
4040
name: 'code-style',
41-
description: 'Checks and fixes code style issues using EasyCodingStandard and Composer Normalize.',
42-
help: 'This command runs EasyCodingStandard and Composer Normalize to check and fix code style issues.'
41+
description: 'Checks and fixes code style issues using EasyCodingStandard and Composer Normalize.'
4342
)]
4443
final class CodeStyleCommand extends BaseCommand implements LoggerAwareCommandInterface
4544
{
@@ -83,6 +82,10 @@ public function __construct(
8382
*/
8483
protected function configure(): void
8584
{
85+
$this->setHelp(
86+
'This command runs EasyCodingStandard and Composer Normalize to check and fix code style issues.'
87+
);
88+
8689
$this->addJsonOption()
8790
->addOption(
8891
name: 'progress',

0 commit comments

Comments
 (0)