Skip to main content

concinno-skills-knowledge

Knowledge-base agent skills for Concinno. Native Python API, no MCP required. MIT / Apache-2.0 / BSD licensed SDKs only — we deliberately keep the Concinno ecosystem permissive-licence-clean.

Status

MVP (0.1.0) — five one-shot tools covering Notion, Confluence, and local Obsidian vaults:

Tool class Platform Underlying SDK SDK licence
NotionPage Notion notion-client MIT
NotionDatabase Notion (DB) notion-client MIT
ConfluencePage Atlassian Cloud atlassian-python-api Apache-2.0
ObsidianVault Obsidian (local) stdlib + python-frontmatter MIT
ObsidianDailyNote Obsidian (local) stdlib + python-frontmatter MIT

Dendron, Logseq, and Evernote are intentionally deferred until a maintained Python SDK with a permissive licence exists. Atlassian Server / Data Center is out of scope (Atlassian stopped selling it in 2024).

Install

pip install concinno-skills-knowledge

All three SDK dependencies are hard requirements and pulled in automatically. python-frontmatter is used by the Obsidian tools only; it is <50kB so we do not gate it behind an optional extra.

Credentials

All credentials live under well-known keys in the Concinno CredentialStore, which reads (in order):

  1. Process runtime overrides via CredentialStore.set(...).
  2. Env var CONCINNO_CRED_<UPPER_KEY>.
  3. ~/.concinno/credentials.json.
Key Env var
notion_token CONCINNO_CRED_NOTION_TOKEN
confluence_url CONCINNO_CRED_CONFLUENCE_URL
confluence_email CONCINNO_CRED_CONFLUENCE_EMAIL
confluence_api_token CONCINNO_CRED_CONFLUENCE_API_TOKEN
obsidian_vault_path CONCINNO_CRED_OBSIDIAN_VAULT_PATH

Example ~/.concinno/credentials.json:

{
  "notion_token": "ntn_...",
  "confluence_url": "https://mycompany.atlassian.net",
  "confluence_email": "me@mycompany.com",
  "confluence_api_token": "atl-...",
  "obsidian_vault_path": "C:\\Users\\me\\Vault"
}

Obsidian has no server, but the vault root path lives in the same credential store for UX consistency — users configure everything in one place. Notion expects an integration token from https://www.notion.so/profile/integrations; Confluence expects an Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens.

If any required credential is missing the tool returns {"error": "no <service> credentials — set via CredentialStore or env ..."} rather than crashing.

Usage via Concinno ToolRegistry

When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry auto-mounts every knowledge tool:

import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"

from concinno.tools.registry import get_default_registry

reg = get_default_registry()
expected = {
    "NotionPage",
    "NotionDatabase",
    "ConfluencePage",
    "ObsidianVault",
    "ObsidianDailyNote",
}
assert expected <= set(reg.list_deferred())

page = reg.get("NotionPage")
page.call(action="search", query="agent", limit=20)

Direct Python usage

from concinno_skills_knowledge import (
    NotionPage,
    NotionDatabase,
    ConfluencePage,
    ObsidianVault,
    ObsidianDailyNote,
)

# Notion
NotionPage().call(action="search", query="roadmap", limit=10)
NotionPage().call(action="get", page_id="...")
NotionDatabase().call(
    action="query",
    database_id="...",
    filter={"property": "Status", "status": {"equals": "Done"}},
)

# Confluence
ConfluencePage().call(action="search", query="platform", limit=30)
ConfluencePage().call(
    action="create",
    space="DOCS",
    title="Agent design",
    body="<p>draft</p>",
)

# Obsidian (local)
ObsidianVault().call(action="search", query="reranker")
ObsidianVault().call(
    action="write",
    path="notes/today.md",
    content="hello",
    frontmatter={"tags": ["agent"]},
)
ObsidianDailyNote().call(action="append", text="- shipped 0.1.0")
ObsidianDailyNote().call(action="read")  # today's note

All tools return {"ok": True, ...} on success or {"error": "..."} on failure — same shape as the other Concinno built-in tools. No exceptions escape the call() surface.

Safety

ObsidianVault and ObsidianDailyNote resolve every path argument through Path.is_relative_to(vault_root) after a canonical resolve, so ../ traversal or absolute paths escape the vault are rejected with {"error": "path escapes vault subtree: ..."}. Absolute paths are also rejected up-front.

NotionPage.search and NotionDatabase.query cap limit at 100 (the Notion API's own maximum); ConfluencePage.search caps at 100 as well. ObsidianVault.search defaults to 50 hits with a 500 hard cap and returns "truncated": true when the limit is reached.

Concurrency

All five tools set is_concurrency_safe = False. KB platforms either have strict rate limits (Notion 3 req/s, Confluence tighter) or open a session-per-call (Obsidian writes); the Concinno scheduler will honour this automatically.

License

Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

concinno_skills_knowledge-0.1.0.tar.gz (47.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

concinno_skills_knowledge-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file concinno_skills_knowledge-0.1.0.tar.gz.

File metadata

File hashes

Hashes for concinno_skills_knowledge-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3c188c764c8bc13faff0dc4f46c1dffe63ed233697d6b9cab95407b4f6f97eaa
MD5 631d051843a819360dc056c840e0ccb3
BLAKE2b-256 2872f5d223c6f37fe949985d1716f6cfc331868acfb5150e8cecfc4f9ff675b7

See more details on using hashes here.

File details

Details for the file concinno_skills_knowledge-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for concinno_skills_knowledge-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fad7e13ff082e899117648967eb19c037cbfea0ec4c1636e1f74ff48d82f56b
MD5 c69ba6e6b7c6d046ee7bad377f9b3e48
BLAKE2b-256 cb92a34649718625118301ea3692257a1dbb58c8db70d8e4439ba81deb61a479

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page