Skip to main content

Generate project tech documentation and push to Confluence using GitHub Copilot SDK

Project description

tsu-cli

Generate project documentation using GitHub Copilot SDK and integrate with document storage tools like Confluence.

⚠️ AI Usage Disclosure

This project was developed with the assistance of Artificial Intelligence (AI) tools, including [e.g., Claude/Copilot]. While I have reviewed, verified and tested the code, portions of the codebase were generated automatically.

  • Human Review: The code has been reviewed by me for accuracy, but potential bugs or edge cases may exist.
  • Best Practice: Users are encouraged to carefully inspect code before using it in production environments.

Prerequisites

Installation

pip install tsu-cli

Development install

git clone https://github.com/vivekrana2012/tsu-cli.git
cd tsu-cli
pip install -e ".[dev]"

Quick Start

# 1. Initialize in your project directory
cd /path/to/your/project
tsu init

# 2. Generate tech documentation
tsu generate

# 3. Push to Confluence
tsu push

What happens during setup

  1. tsu init creates a .tsu/ directory with configuration and a prompt file.
  2. If you provide a Confluence parent page URL and credentials, a blank placeholder page is created immediately — locking the page_id so future pushes (including CI/CD) update the same page instead of creating duplicates.
  3. tsu generate sends your codebase to a Copilot-powered LLM and writes .tsu/document.md. If a Confluence page already exists, its content is pulled first so manual edits are preserved.
  4. tsu push converts the markdown to Confluence storage format and uploads it.

Commands

tsu init

Interactive setup — creates .tsu/ directory with configuration files.

If you provide a parent page URL and credentials, a blank placeholder page is created on Confluence during init. The page_id is saved in .tsu/confluence.json so that all future tsu push runs (including from CI/CD pipelines like Jenkins) update the same page instead of creating duplicates. Re-running tsu init preserves the existing page_id.

tsu init
tsu init --dir /path/to/project
tsu init --profile func        # initialize a custom profile
Flag Description Default
-d, --dir Project directory current directory
-p, --profile Profile name tech

tsu generate

Analyze the project using GitHub Copilot and generate .tsu/document.md.

If a Confluence page already exists, the current page content is pulled and sent to the LLM as reference — preserving any manually added content while updating sections based on the latest codebase.

tsu generate
tsu generate --model claude-sonnet-4.5
tsu generate --output custom-doc.md
tsu generate --extra "Focus on the authentication flow"
tsu generate --offline           # skip Confluence sync, generate fresh
tsu generate --profile func      # generate for a specific profile
Flag Description Default
-d, --dir Project directory current directory
-m, --model LLM model name (auto uses SDK default) value in config.json
-o, --output Output file path .tsu/document.md
-e, --extra One-off instructions appended to the prompt
-p, --profile Profile name tech
--offline Skip Confluence sync, generate fresh from codebase only off

tsu push

Upload .tsu/document.md to Confluence. Creates a new page on first push, updates the existing page on subsequent pushes (version is incremented automatically).

tsu push
tsu push --profile func
Flag Description Default
-d, --dir Project directory current directory
-p, --profile Profile name tech

tsu pull

Fetch the remote Confluence page as markdown and save it locally. Requires a page_id in the profile's Confluence config.

tsu pull
tsu pull --profile func
Flag Description Default
-d, --dir Project directory current directory
-p, --profile Profile name tech

tsu profiles

Show all initialized profiles and available built-in profiles.

tsu profiles
tsu profiles --dir /path/to/project

tsu models

List available LLM models from the Copilot SDK.

tsu models

tsu help

Show a detailed guide covering the full workflow, all commands, flags, authentication, prompt customization, and examples.

tsu help

tsu auth

Manage Confluence credentials (stored in system keychain, never on disk).

tsu auth set      # Store email + token in keychain
tsu auth status   # Check credential configuration
tsu auth clear    # Remove stored credentials

tsu --version

Print the installed version.

tsu --version
tsu -v

Profiles

Profiles let you maintain multiple independent documents from the same project — for example a tech overview, a functional spec, and an API reference — each with its own prompt file, Confluence page, and output file.

The default profile is tech. Create additional profiles by passing --profile <name> to init, generate, push, or pull.

Built-in profiles

Three pre-defined profiles ship with tsu-cli. When you init a profile whose name matches a built-in profile, the tailored prompt is seeded automatically instead of the generic tech profile:

Profile name Focus
api_spec API endpoints, request/response schemas, auth, error codes
func_spec Business rules, workflows, validation logic, data transformations
security_spec Auth mechanisms, data handling, input validation, threat surface

Run tsu profiles to see which profiles are available and which are already initialized.

Creating and using profiles

# Initialize profiles (built-in profiles are seeded automatically)
tsu init                            # default "tech" profile
tsu init --profile api_spec         # API specification
tsu init --profile func_spec        # functional specification
tsu init --profile security_spec    # security overview
tsu init --profile custom-name      # custom profile (uses generic prompt)

# Generate & push per profile
tsu generate --profile api_spec
tsu push --profile func_spec

# See all profiles + available profiles
tsu profiles

Per-profile files

Each profile gets its own set of files inside .tsu/:

File type tech (default) Custom profile {name}
Confluence config confluence.json confluence-{name}.json
Prompt file generate.md generate-{name}.md
Generated output document.md document-{name}.md

config.json (model selection) is shared across all profiles.

Re-running tsu init for an existing profile preserves the page_id and will not overwrite an edited prompt file.

Configuration

All config lives in .tsu/ (safe to commit — no secrets):

File Purpose
config.json Shared tool settings (LLM model)
confluence.json Confluence page target (per profile)
generate.md Prompt file (per profile, editable)
document.md Generated documentation (per profile)

Confluence Credentials

Credentials are resolved in this order (never stored in config files):

  1. Environment variables: CONFLUENCE_USER, CONFLUENCE_TOKEN
  2. System keychain (via tsu auth set)
  3. Interactive prompt

Use environment variables for CI/CD pipelines.

Customizing the Prompt

tsu init copies the default prompt file to .tsu/generate.md (or .tsu/generate-{profile}.md for custom profiles). Edit it freely — your changes are used on every subsequent tsu generate run, and re-running tsu init will not overwrite an existing prompt file.

Default sections

The default profile ships with six sections. You can add, remove, reorder, or rewrite any of them:

# Section Format
1 Overview 2-4 paragraphs — what the project does, language, framework
2 Tech Stack & Frameworks Table: Category · Technology · Version · Notes
3 Architecture Prose + ASCII/Unicode architecture diagram + flow diagram + component responsibilities table
4 API Endpoints Table: Method · Path · Description (skipped if none found)
5 Configuration Table per config source: Key · Type · Default · Required · Description
6 Dependencies Summary Table: Dependency · Version · Purpose

How to customize

  • Add a section — append a new ## 7. Security heading with instructions.
  • Remove a section — delete the heading and its instructions from the file.
  • Change detail level — rewrite the instructions under a heading (e.g. "Write a single paragraph" instead of "Use a table").
  • One-off tweaks — use --extra without editing the prompt file:
    tsu generate --extra "Focus on the authentication flow"
    tsu generate --extra "Write in Japanese"
    tsu generate --extra "Skip the dependencies section"
    

License

MIT

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

tsu_cli-0.1.12.tar.gz (48.7 kB view details)

Uploaded Source

Built Distribution

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

tsu_cli-0.1.12-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file tsu_cli-0.1.12.tar.gz.

File metadata

  • Download URL: tsu_cli-0.1.12.tar.gz
  • Upload date:
  • Size: 48.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for tsu_cli-0.1.12.tar.gz
Algorithm Hash digest
SHA256 a230b400cd4d10d3128c9138c5dddb816bd160748b12cc0c855bf3b7ea076584
MD5 52effbc6a76184b35253fd8f1c673cca
BLAKE2b-256 789a0ebf9b9ec82924bbdd210dfab0a6e3478fa1e14f07070d0d75f0add4e7bb

See more details on using hashes here.

File details

Details for the file tsu_cli-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: tsu_cli-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 35.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for tsu_cli-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 5f7741ed7a105d4f29220b88ed97401cbdb97e52cc2036f37e9b08d59645c2ad
MD5 57dd8724193996e06d6d04ee28dd98a8
BLAKE2b-256 378045935f9a0d48797d4799ee8895fbfe433d946ae4418ae13d624dcb8ea443

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