Ashard Means "A Shard"

Ashard is the public name for this Shards-compatible fork. The name is meant to read naturally as "a shard": a tool that wraps around a shard workflow and makes it more helpful for agent-oriented development.

The codebase still exposes the Shards namespace because compatibility is the contract. Public-facing copy uses Ashard to describe the additive tooling we are building for Amber v2 and for people working inside the amberverse.

We may personify the name more over time as the Amber v2 tool family evolves, but today the practical message is simple: if you know Shards, Ashard should still feel familiar.

Docs exports: JSON llms.txt llms-full.txt Agent Files

module Shards

Defined in:

ai_docs.cr
ai_docs_info.cr
assistant_config.cr
assistant_config_info.cr
assistant_versions.cr
change_logger.cr
checksum.cr
cli.cr
commands/ai_docs.cr
commands/assistant.cr
commands/audit.cr
commands/build.cr
commands/check.cr
commands/command.cr
commands/compliance_report.cr
commands/diff.cr
commands/docs.cr
commands/init.cr
commands/install.cr
commands/licenses.cr
commands/list.cr
commands/lock.cr
commands/mcp.cr
commands/outdated.cr
commands/policy.cr
commands/prune.cr
commands/run.cr
commands/run_script.cr
commands/sbom.cr
commands/update.cr
commands/version.cr
compliance/html_template.cr
compliance/report_builder.cr
compliance/report_formatter.cr
config.cr
dependency.cr
diff_report.cr
docs.cr
errors.cr
license_policy.cr
license_scanner.cr
lock.cr
lockfile_differ.cr
logger.cr:4
logger.cr:13
mcp/claude_config.cr
mcp/compliance_server.cr
mcp_manager.cr
molinillo_solver.cr
override.cr
package.cr
policy.cr
policy_checker.cr
policy_report.cr
postinstall_info.cr
purl.cr
requirement.cr
resolvers/crystal.cr
resolvers/fossil.cr
resolvers/git.cr
resolvers/hg.cr
resolvers/path.cr
resolvers/resolver.cr
script.cr
spdx.cr
spec.cr
target.cr
version.cr
versions.cr
vulnerability_report.cr
vulnerability_scanner.cr

Constant Summary

AI_DOCS_INFO_FILENAME = ".ai-docs-info.yml"
ASSISTANT_CONFIG_FILENAME = ".assistant-config.yml"
BUILD_DATE = ""
BUILD_SHA1 = {{ (env("SHARDS_CONFIG_BUILD_COMMIT")) || "" }}
BUILTIN_COMMANDS = ["build", "run", "check", "diff", "init", "install", "list", "lock", "outdated", "prune", "update", "version", "run-script", "ai-docs", "docs", "sbom", "mcp", "audit", "licenses", "policy", "compliance-report", "mcp-server", "assistant"] of ::String
DEFAULT_COMMAND = "install"
DEFAULT_VERSION = "0"
FORMATTER = ::Log::Formatter.new do |entry, io| message = entry.message package_name = entry.context[:package]? if @@colors if package_name && entry.severity <= ::Log::Severity::Debug ((io << "[") << (package_name.colorize(:blue)).to_s) << "] " end io << (if color = LOGGER_COLORS[entry.severity]? if idx = message.index(' ') (message[0...idx].colorize(color)).to_s + message[idx..-1] else message.colorize(color) end else message end) else (io << entry.severity.label[0]) << ": " if package_name && entry.severity <= ::Log::Severity::Debug ((io << "[") << package_name) << "] " end io << message end end
INSTALL_DIR = "lib"
LOCK_FILENAME = "shard.lock"
Log = ::Log.for(self)
LOGGER_COLORS = {::Log::Severity::Error => :red, ::Log::Severity::Warn => :yellow, ::Log::Severity::Info => :green, ::Log::Severity::Debug => :light_gray}
OVERRIDE_FILENAME = "shard.override.yml"
POLICY_FILENAME = ".shards-policy.yml"
POSTINSTALL_INFO_FILENAME = ".shards.postinstall"
SPEC_FILENAME = "shard.yml"
VERSION = {{ (read_file("/home/runner/work/shards/shards/src/../VERSION")).chomp }}
VERSION_AT_FOSSIL_COMMIT = /^(\d+[-.][-.a-zA-Z\d]+)\+fossil\.commit\.([0-9a-f]+)$/
VERSION_AT_GIT_COMMIT = /^(\d+[-.][-.a-zA-Z\d]+)\+git\.commit\.([0-9a-f]+)$/
VERSION_AT_HG_COMMIT = /^(\d+[-.][-.a-zA-Z\d]+)\+hg\.commit\.([0-9a-f]+)$/
VERSION_REFERENCE = /^v?\d+[-.][-.a-zA-Z\d]+$/
VERSION_TAG = /^v(\d+[-.][-.a-zA-Z\d]+)$/

Class Method Summary

Class Method Detail

def self.ai_docs_info #

[View source]
def self.bin_path #

[View source]
def self.bin_path=(bin_path : String) #

[View source]
def self.cache_path #

[View source]
def self.cache_path=(cache_path : String) #

[View source]
def self.check_and_install_dependencies(path) #

[View source]
def self.cli_options #

[View source]
def self.colors=(colors : Bool) #

[View source]
def self.colors? : Bool #

[View source]
def self.crystal_bin #

[View source]
def self.crystal_bin=(crystal_bin : String) #

[View source]
def self.crystal_version #

[View source]
def self.crystal_version=(crystal_version : String) #

[View source]
def self.display_help_and_exit(opts) #

[View source]
def self.frozen=(frozen) #

[View source]
def self.frozen? #

[View source]
def self.global_override_filename #

[View source]
def self.info #

[View source]
def self.install_path #

[View source]
def self.install_path=(install_path : String) #

[View source]
def self.jobs : Int32 #

[View source]
def self.jobs=(jobs : Int32) #

[View source]
def self.local=(local) #

[View source]
def self.local? #

[View source]
def self.parse_args(args) #

[View source]
def self.postinstall_info #

[View source]
def self.run #

[View source]
def self.run_shards_subcommand(process_name, args) #

[View source]
def self.set_debug_log_level #

[View source]
def self.set_warning_log_level #

[View source]
def self.skip_ai_assistant=(skip_ai_assistant) #

[View source]
def self.skip_ai_assistant? #

[View source]
def self.skip_ai_docs=(skip_ai_docs) #

[View source]
def self.skip_ai_docs? #

[View source]
def self.skip_executables=(skip_executables) #

[View source]
def self.skip_executables? #

[View source]
def self.skip_verify=(skip_verify) #

[View source]
def self.skip_verify? #

[View source]
def self.version_string #

[View source]
def self.with_development=(with_development) #

[View source]
def self.with_development? #

[View source]