ace-handbook 0.21.4 → 0.23.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b12292188dac723637dc85a45df83a26da78bd03ef36cad43f24ec48affe2489
4
- data.tar.gz: 3812c35dfa02adeccc88c379d4a338f7ab212c40082169b10aebb85dd96e479d
3
+ metadata.gz: 9ac7df9cd7a6a223a639a7cbc54f3669b81d33ce2e2a84ab6958117b7bf79041
4
+ data.tar.gz: 51256569bc2f4a4121a1aba33778e701e81a48e750c6887b2467e5bf21408dc2
5
5
  SHA512:
6
- metadata.gz: ccc672ee0b2e6a39c645693d090122dd31049790e64365db7ea0df7270e562de6106eef081242b615240f7d594e3bdef456b7f2e38a321e4e7c2269843ef19be
7
- data.tar.gz: a35964688e4ee60c58428ecba1cad7b15ae8e7291f05e3bc1106ff935e2382399ff4e24c6251d4e7fffe1b09968a5ae7ed19e83edf31b58266be141cc2e6ba5d
6
+ metadata.gz: a89bfa62563268247139b31d05fbc48fc508b0af6e18f249c82f9b3f5f8cf2486128bb013f711f718610fc4dd68d8ae8d0883ce9a417a2b299c55be8a5c7de15
7
+ data.tar.gz: 8879cb6414ae62d3648ac27cb91f2500e23799cf163a529bdb32b595b633c1791556cf883b5731769bc3a67e7e2aa4680412efc2aa9bb82edc7e7d26e531bd7f
data/CHANGELOG.md CHANGED
@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.23.5] - 2026-03-31
11
+
12
+ ### Changed
13
+ - Replaced `wfi://release/rubygems-verify-install` workflow with E2E scenario `TS-MONO-001-rubygems-install` in `ace-monorepo-e2e/`. Updated all skill and doc references to use `ace-test-e2e ace-monorepo-e2e --test-id TS-MONO-001`.
14
+
15
+ ## [0.23.4] - 2026-03-31
16
+
17
+ ### Changed
18
+ - Shipped default sync config with no providers pre-enabled so users choose their own agent integrations.
19
+ - Reorganized install instructions across README, quick-start, and DEVELOPMENT docs by toolkit building blocks (Plan, Build, Context, QA, Git) with all gems in `development, test` group.
20
+
21
+ ## [0.23.3] - 2026-03-31
22
+
23
+ ### Changed
24
+ - Extracted RubyGems installation verification into standalone `wfi://release/rubygems-verify-install` workflow with mise-based sandbox isolation.
25
+ - Updated `as-release-rubygems-publish` skill to recommend the standalone verification workflow instead of requiring inline proof classification.
26
+
27
+ ## [0.23.2] - 2026-03-30
28
+
29
+ ### Technical
30
+ - Added edge-case regression coverage for `ProviderSyncer#summarize_sources`, including empty inventory handling and nil/blank source normalization.
31
+
32
+ ## [0.23.1] - 2026-03-30
33
+
34
+ ### Fixed
35
+ - Restored `Bash(gem:*)` permissions in the canonical `as-release-rubygems-publish` skill so release workflows can invoke gem commands directly.
36
+
37
+ ### Technical
38
+ - Added regression coverage for projected release skill permissions to prevent permission drift.
39
+
40
+ ## [0.23.0] - 2026-03-30
41
+
42
+ ### Changed
43
+ - Clarified `ace-handbook sync` output by adding inventory source counts and explicit rerun guidance when only one source is discovered.
44
+ - Expanded `ace-handbook` docs to define `.ace-handbook/` as the canonical project-level handbook root for workflows, guides, templates, and skills in normal projects.
45
+
46
+ ### Technical
47
+ - Added CLI sync command regression coverage for inventory-source summary and single-source guidance output.
48
+
49
+ ## [0.22.0] - 2026-03-29
50
+
51
+ ### Changed
52
+ - Added a deterministic RubyGems propagation proof gate to coordinated release workflows with explicit `SAFE`, `LAG_DETECTED`, and `METADATA_BROKEN` classification outcomes.
53
+
54
+ ### Technical
55
+ - Added operator-facing proof contract documentation and synchronized `as-release-rubygems-publish` skill guidance with the updated release workflow expectations.
56
+
10
57
  ## [0.21.4] - 2026-03-29
11
58
 
12
59
  ### Technical
data/README.md CHANGED
@@ -38,5 +38,7 @@
38
38
 
39
39
  **Sync and inspect provider integrations** - run `ace-handbook sync` to project canonical skills into provider-native folders and `ace-handbook status` to check integration health across all configured providers.
40
40
 
41
+ **Extend handbook content in normal projects** - put project-specific workflows, guides, templates, and skills under `.ace-handbook/` and discover them with protocol URLs (`wfi://`, `guide://`, `tmpl://`, `skill://`). See [Usage Guide](docs/usage.md) for path conventions.
42
+
41
43
  ---
42
44
  [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md) | Part of [ACE](https://github.com/cs3b/ace)
@@ -5,11 +5,12 @@ description: Publish ACE gems to RubyGems.org in dependency order
5
5
  # agent: general-purpose
6
6
  user-invocable: true
7
7
  allowed-tools:
8
+ - Bash(bundle:*)
8
9
  - Bash(gem:*)
9
10
  - Bash(ace-bundle:*)
10
11
  - Read
11
12
  argument-hint: "[gem-name...] [--dry-run]"
12
- last_modified: 2026-03-21
13
+ last_modified: 2026-03-29
13
14
  source: ace-handbook
14
15
  integration:
15
16
  targets:
@@ -23,17 +24,6 @@ integration:
23
24
  frontmatter:
24
25
  context: fork
25
26
  model: haiku
26
- assign:
27
- source: wfi://release/rubygems-publish
28
- steps:
29
- - name: publish-gems
30
- description: Publish ACE gems to RubyGems.org in dependency order
31
- intent:
32
- phrases:
33
- - "publish gems"
34
- - "push to rubygems"
35
- - "publish to rubygems"
36
- tags: [release, rubygems, publishing]
37
27
  skill:
38
28
  kind: workflow
39
29
  execution:
@@ -56,3 +46,5 @@ None
56
46
  - Follow the workflow as the source of truth.
57
47
  - Do the work described by the workflow instead of only summarizing it.
58
48
  - When the workflow requires edits, tests, or commits, perform them in this project.
49
+
50
+ - After live publishing, recommend running `ace-test-e2e ace-monorepo-e2e --test-id TS-MONO-001` for installation verification.
@@ -26,9 +26,27 @@ module Ace
26
26
  "(#{result[:projected_skills]} skills, #{result[:updated_files]} updated, " \
27
27
  "#{result[:removed_entries]} removed)"
28
28
  end
29
+ print_inventory_summary(results)
29
30
  rescue => e
30
31
  raise Ace::Support::Cli::Error.new(e.message)
31
32
  end
33
+
34
+ private
35
+
36
+ def print_inventory_summary(results)
37
+ source_breakdown = results.first&.fetch(:source_breakdown, {})
38
+ return if source_breakdown.nil? || source_breakdown.empty?
39
+
40
+ puts "inventory sources: #{format_source_breakdown(source_breakdown)}"
41
+ return unless source_breakdown.length == 1
42
+
43
+ source = source_breakdown.keys.first
44
+ puts "note: only '#{source}' skills were discovered. if you installed additional ace-* packages recently, rerun `ace-handbook sync` after installation."
45
+ end
46
+
47
+ def format_source_breakdown(source_breakdown)
48
+ source_breakdown.map { |source, count| "#{source}:#{count}" }.join(", ")
49
+ end
32
50
  end
33
51
  end
34
52
  end
@@ -21,19 +21,23 @@ module Ace
21
21
  end
22
22
 
23
23
  def sync(provider: nil)
24
- providers_to_sync(provider).map { |provider_id| sync_provider(provider_id) }
24
+ skills = inventory.all
25
+ source_breakdown = summarize_sources(skills)
26
+ providers_to_sync(provider).map do |provider_id|
27
+ sync_provider(provider_id, skills: skills, source_breakdown: source_breakdown)
28
+ end
25
29
  end
26
30
 
27
31
  private
28
32
 
29
- def sync_provider(provider)
33
+ def sync_provider(provider, skills:, source_breakdown:)
30
34
  output_dir = File.join(project_root, registry.output_dir(provider))
31
35
  prepare_output_dir(output_dir)
32
36
 
33
37
  expected = {}
34
38
  updated_files = 0
35
39
 
36
- inventory.all.each do |skill|
40
+ skills.each do |skill|
37
41
  next unless Molecules::SkillProjection.projection_targets(skill.frontmatter, registry: registry).include?(provider)
38
42
 
39
43
  frontmatter = Molecules::SkillProjection.projected_frontmatter(skill.frontmatter, provider: provider)
@@ -55,10 +59,19 @@ module Ace
55
59
  relative_output_dir: registry.output_dir(provider),
56
60
  projected_skills: expected.size,
57
61
  updated_files: updated_files,
58
- removed_entries: removed_entries
62
+ removed_entries: removed_entries,
63
+ source_breakdown: source_breakdown
59
64
  }
60
65
  end
61
66
 
67
+ def summarize_sources(skills)
68
+ skills.each_with_object(Hash.new(0)) do |skill, memo|
69
+ source = skill.source.to_s
70
+ key = source.empty? ? "unknown" : source
71
+ memo[key] += 1
72
+ end.sort.to_h
73
+ end
74
+
62
75
  def providers_to_sync(requested_provider)
63
76
  providers = if requested_provider
64
77
  [requested_provider.to_s]
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Handbook
5
- VERSION = '0.21.4'
5
+ VERSION = '0.23.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-handbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.4
4
+ version: 0.23.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-03-29 00:00:00.000000000 Z
10
+ date: 2026-04-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-config