Expand description
§canonic
Versioned markdown canned-response corpus for Jira support workflows.
The CLI is a thin front end. Library consumers can call the same engines:
| Module | Role |
|---|---|
corpus | Walk and load snell-*.md responses |
check | Quality gate (prefix, sop, closings) |
convert | Pandoc markdown ↔ Jira wiki markup |
index | Tantivy BM25 search and near-duplicate pairs |
lint | Vale CLI + in-process Harper |
doctor | Tooling probes |
jira_import | Free REST probe, read import, explicit comment POST |
scaffold | New snell- templates and promote import → responses |
tui | Interactive ratatui corpus browser (canonic tui) |
§Example
use canonic::{default_corpus_dir, walk_responses, check_responses};
let dir = default_corpus_dir();
let responses = walk_responses(&dir).expect("read corpus");
let report = check_responses(&responses);
assert!(report.ok() || !report.findings.is_empty());Markdown under corpus/responses/ remains the source of truth. Jira is a
publication surface: convert for paste-in, import only as drafts under
corpus/imports/, then scaffold::promote_to_corpus after review.
Re-exports§
pub use check::check_corpus;pub use check::check_responses;pub use check::format_check_report;pub use check::CheckReport;pub use check::REQUIRED_PREFIX;pub use convert::convert_jira_to_markdown;pub use convert::convert_markdown_to_jira;pub use convert::convert_path_to_jira;pub use convert::tool_available as pandoc_available;pub use corpus::default_corpus_dir;pub use corpus::load_response;pub use corpus::walk_responses;pub use corpus::CannedResponse;pub use doctor::collect_statuses;pub use doctor::critical_missing;pub use doctor::format_doctor;pub use doctor::ToolStatus;pub use index::default_index_dir;pub use index::find_duplicates;pub use index::find_duplicates_jaccard;pub use index::jaccard_similarity;pub use index::reindex;pub use index::search;pub use index::self_query_for;pub use index::tokenize;pub use index::DedupePair;pub use index::IndexDoc;pub use index::SearchHit;pub use jira_import::comment_body_to_text;pub use jira_import::default_import_dir;pub use jira_import::format_probe;pub use jira_import::import_jira;pub use jira_import::is_cloud_host;pub use jira_import::plain_text_to_adf;pub use jira_import::post_comment_from_markdown;pub use jira_import::post_comment_from_markdown_with_format;pub use jira_import::post_issue_comment;pub use jira_import::post_issue_comment_with_format;pub use jira_import::probe_jira;pub use jira_import::CommentBodyFormat;pub use jira_import::JiraAuth;pub use jira_import::JiraConfig;pub use jira_import::JiraProbe;pub use jira_import::PostedComment;pub use lint::format_report;pub use lint::lint_paths;pub use lint::lint_text_harper_inprocess;pub use lint::LintEngine;pub use lint::LintFinding;pub use lint::LintReport;pub use scaffold::check_response_path;pub use scaffold::promote_to_corpus;pub use scaffold::resolve_response_id;pub use scaffold::scaffold_markdown;pub use scaffold::write_scaffold;pub use scaffold::ScaffoldOptions;pub use scaffold::TEAM_SIGN_OFF;pub use tui::run_tui;pub use tui::App as TuiApp;
Modules§
- check
- Corpus quality checks for the shared
snellprefix migration. - convert
- Pandoc-backed markdown → Jira/Confluence wiki markup conversion.
- corpus
- Load and walk version-controlled markdown canned responses.
- doctor
- Health check for external and in-process tooling.
- index
- Tantivy-backed full-text index for search and near-duplicate detection.
- jira_
import - Free-tier Jira platform REST only (no Marketplace apps).
- lint
- Vale and Harper lint for the markdown corpus (CLI + in-process harper-core).
- scaffold
- Scaffold new
snell-responses and promote import drafts into the published corpus. - tui
- Interactive terminal UI for browsing and gating the canned-response corpus.