pub mod detect;
pub mod install;
pub mod model;
pub mod platform;
pub mod render;
pub mod state;
pub use detect::{already_nudged, binary_on_path, record_nudge, should_nudge};
pub use install::{
Action, Placed, SkillScope, install_suite, place_rendered, place_skills, skill_status,
};
pub use model::{BootstrapStep, CmdHint, Rule, Sibling, SkillSpec};
pub use platform::{AlwaysOnFile, PLATFORMS, Platform, Scope, SkillDir, platform};
pub use render::{
RenderAll, check_or_bless, default_handoff, render_all, render_always_on, render_bootstrap,
render_combined, render_skill, render_suite,
};
pub use state::{STAMP_FILE, SkillState, compare_versions, read_stamp, skill_state, write_stamp};
pub fn example_spec() -> SkillSpec {
SkillSpec::new(
"DemoTool",
"demo",
"A code-context tool for coding agents.",
"1.0.0",
)
.rule("Before a non-trivial edit, run `demo prepare` to scope it.")
.rule("Before assuming a symbol's behavior, run `demo explain <symbol>`.")
.rule("After changing code, run `demo reindex` to keep context current.")
.command("demo prepare", "scope a change before editing")
.command("demo explain", "get focused context for a symbol")
.bootstrap_step("brew install demo", "install the CLI")
.bootstrap_step("demo index .", "index this repo")
.sibling(
"SiblingTool",
"sibling",
"the shared/team layer — install it to share decisions across the team.",
)
}