Skip to main content

Knowledge-base agent skills (Notion/Confluence/Obsidian) for Concinno — native Python API. MIT / Apache-2.0 / BSD SDKs only.

Project description

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.

Project details


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.

Supported by

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