Conversation
…onfig.global Add ScopeMetadata interface with optional globs, paths, and trigger fields. Add optional metadata field to Rule interface for scope targeting. Add optional global field to ProjectConfig (defaults to true semantically).
…riminated union Replace monolithic Bridge interface with discriminated union: - DirectoryBridge (kind: 'directory'): claude, cursor, windsurf - MarkerBridge (kind: 'marker'): gemini, copilot Add isDirectoryBridge/isMarkerBridge type guards and getBridgeOutputPaths helper. Update all bridge implementations and consumer code to use the new union. Update tests for new bridge shapes.
scopeToFilename converts scope names to filenames by replacing colons with hyphens (e.g., team:payments -> dwf-team-payments.md). cleanStaleFiles removes orphaned dwf-* files from a directory that are not in the current expected set, for cleanup after compilation. Includes comprehensive tests for both functions covering built-in scopes, custom scopes with colons, stale file removal, and edge cases.
Create cleanup.ts with detectLegacyFiles(), migrateLegacyFiles(), and removeLegacyMarkerBlock() for v0.5/v0.6 migration. Detects legacy .cursor/rules/devworkflows.mdc, .windsurf/rules/devworkflows.md, and CLAUDE.md with markers. Idempotent — skips missing files silently. Includes 17 tests covering detection, migration, marker removal, idempotency, and edge cases.
…tput
Each DirectoryBridge now generates one file per scope instead of a
single monolithic file. Keys follow the pattern
{outputDir}/dwf-{scope}.{ext}.
- Claude: paths frontmatter when metadata.paths set, no frontmatter
for global scope
- Cursor: description + globs/alwaysApply frontmatter per scope
- Windsurf: trigger frontmatter (default: always), globs when
trigger=glob. Char limit warning now applies per-file.
Includes comprehensive tests for each bridge covering multi-file
output, frontmatter variants, custom scopes with colons, and
metadata handling.
Add type guard assertions (isMarkerBridge/isDirectoryBridge) to existing Copilot tests. Create full Gemini test suite verifying MarkerBridge type, output paths, markers, scope sorting, and filtering.
Update compile, e2e, and output format tests to expect the new
multi-file paths (.claude/rules/dwf-{scope}.md) instead of the
old single-file CLAUDE.md output.
…ures The ProjectConfig interface gained a required `global` field in task 1.1 but existing test fixtures were not updated, causing TypeScript compilation failures in the test tsconfig.
Add validation that rejects unsupported config versions (only 0.1/0.2 accepted). Import VALID_CONFIG_VERSIONS into parser for validation. Scope metadata parsing was already implemented in tasks 1.1-1.9.
…tale cleanup and legacy migration Rewrite executePipeline to discriminate between DirectoryBridge and MarkerBridge flows. DirectoryBridges write one file per scope then run cleanStaleFiles to remove orphaned dwf-* files. MarkerBridges continue using marker-based merge. Legacy migration runs once before writing new files. Dry-run shows summary of what would be generated.
…output Show per-scope file listing for DirectoryBridges with output directory pattern. Show single output file for MarkerBridges. Update mode label from 'full file' to 'multi-file (one per scope)'. Windsurf char limit check now reports per-file max instead of total.
The parser always provides a default value for global (true), so the type should reflect that it is always present after parsing.
- Parser tests: scope metadata parsing (top-level, nested, backward compat, invalid trigger/globs rejection, metadata propagation to rules) - Config tests: v0.1/v0.2 version handling, global field, version validation - Schema tests: validateScopeMetadata, isValidTrigger, VALID_CONFIG_VERSIONS - Compile integration tests: DirectoryBridge multi-file output, MarkerBridge output, mixed bridges, stale file cleanup, legacy migration, dry-run mode - Explain tests: multi-file mode label, per-scope file listing - E2E tests: multi-file compile, dry-run, explain multi-file paths - Output tests: updated mode label assertion
…ion detection - Add registry.json manifest generation script and GitHub Action - Replace 1h TTL cache with ETag-based conditional requests - Add searchRegistry() and filterRegistryByTag() utilities - Add --search and --tag flags to devw add --list - Add version detection with update prompt on devw add - Update banner with user-customized ASCII art - Fix remove E2E test for non-TTY guard behavior
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Match skills.sh style: ANSI 256-color grays (252→240) instead of cyan-to-magenta rainbow (45→201).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major evolution of dev-workflows from a monolithic rule compiler to a multi-file distribution system with professional CLI experience.
Phase 1: Multi-File Compilation
DirectoryBridge | MarkerBridgediscriminated union replacing flat Bridge interfacedwf-{scope}.md/mdc) with native frontmatter (paths:,globs:,trigger:)Phase 2: .agents/ Distribution
.agents/rules/devw/(pure markdown, no editor frontmatter)devw doctorwith canonical sync, legacy migration, and frontmatter checksPhase 3: Global Scope
~/.dwf/for global rules, merged at compile time (project wins on conflicts)devw initasks project/global in interactive flow,--globalflag for non-interactiveglobal: falsein config.yml to opt out~/.claude/rules/,~/.cursor/rules/, etc.Phase 4: CLI Visual Overhaul
chalk→picocolors,@inquirer/prompts→@clack/promptsPhase 5: Registry Phase 1
registry.jsonmanifest generated in CI (GitHub Action)devw add --search <term>and--tag <tag>filteringdevw addStats
Test plan
pnpm build && pnpm test— all 465 tests passdevw init— verify project/global flowdevw compile— verify multi-file output in.claude/rules/,.cursor/rules/,.agents/rules/devw/devw compile --dry-run— lists all files without writingdevw doctor— verify new checks (canonical sync, legacy, frontmatter)devw add --list— verify registry manifest fetchdevw add --search typescript— verify searchdevw explain— verify multi-file output paths🤖 Generated with Claude Code