Skip to main content

Create AI prompts with files, directories, and URLs

Project description

ctxkit

PyPI - Status PyPI GitHub PyPI - Python Version

ctxkit is a command-line tool for constructing AI prompts containing files, directories, and URL content. For example:

ctxkit -m "Please review the following source code file." -f main.py

In the preceding example, the -m argument outputs the message text, and the -f argument outputs the main.py file text as follows.

Please review the following source code file.

<main.py>
print('Hello, world!')
</main.py>

Copying Output

To copy the output of ctxkit and paste it into your favorite AI chat application, pipe ctxkit's output into the clipboard tool for your platform.

macOS

ctxkit -m "Hello!" | pbcopy

Windows

ctxkit -m "Hello!" | clip

Linux

ctxkit -m "Hello!" | xsel -ib

Usage

Using the ctxkit command line application, you can add any number of ordered context items of the following types: configuration files (-c), messages (-m), URL content (-u), files (-f), and directories (-d).

usage: ctxkit [-h] [-g] [-c PATH] [-m TEXT] [-u URL] [-f PATH] [-d PATH]
              [-x EXT] [-l N] [-v VAR EXPR]

options:
  -h, --help          show this help message and exit
  -g, --config-help   display the ctxkit config file format
  -c, --config PATH   include the ctxkit config
  -m, --message TEXT  include the prompt message
  -u, --url URL       include the URL
  -f, --file PATH     include the file
  -d, --dir PATH      include a directory's files
  -x, --ext EXT       include files with the extension
  -l, --depth N       the maximum directory depth, default is 0 (infinite)
  -v, --var VAR EXPR  define a variable (reference with "{{var}}")

Variables

You can specify one or more variable references in a message's text, a file path, a directory path, or a URL using the syntax, {{var}}. A variable's value is specified using the -v argument. For example:

ctxkit -v package ctxkit -m 'Write a 100 word or less description of the Python "{{package}}"'

Configuration Files

ctxkit JSON configuration files allow you to construct complex prompts in one or more JSON files.

Example: Write Unit Tests

To generate a prompt to write unit tests for a function or method in a module, create a configuration file similar to the following:

{
    "items": [
        {"message": "Write the unit test methods to cover the code in the {{scope}}."},
        {"file": "src/my_package/{{base}}.py"},
        {"file": "src/tests/test_{{base}}.py"}
    ]
}

In this example, the "scope" variable allows you to specify what you want to write unit tests for. The "base" variable specifies the base sub-module name. To generate the prompt, run ctxkit:

ctxkit -v base main -v scope "main function" -c unittest.json

Configuration File Format

The ctxkit -g argument outputs the JSON configuration file format defined using the Schema Markdown Language.

# The ctxkit configuration file format
struct CtxKitConfig

    # The list of prompt items
    CtxKitItem[len > 0] items


# A prompt item
union CtxKitItem

    # Config file include
    string config

    # A prompt message
    string message

    # A long prompt message
    string[len > 0] long

    # File include path
    string file

    # Directory include
    CtxKitDir dir

    # URL include
    string url

    # Set a variable (reference with "{{var}}")
    CtxKitVariable var


# A directory include item
struct CtxKitDir

    # The directory path
    string path

    # The file extensions to include (e.g. ".py")
    string[] exts

    # The directory traversal depth (default is 0, infinite)
    optional int(>= 0) depth


# A variable definition item
struct CtxKitVariable

    # The variable's name
    string name

    # The variable's value
    string value

Development

This package is developed using python-build. It was started using python-template as follows:

template-specialize python-template/template/ ctxkit/ -k package ctxkit -k name 'Craig A. Hobbs' -k email 'craigahobbs@gmail.com' -k github 'craigahobbs' -k noapi 1

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

ctxkit-1.0.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

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

ctxkit-1.0.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file ctxkit-1.0.0.tar.gz.

File metadata

  • Download URL: ctxkit-1.0.0.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ctxkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fdaee7ed60475504776a1f942b3ae155658c2c921df98c905c2e8dafbebda8d9
MD5 2c3a08774afb12d85f6ea8b011682e5a
BLAKE2b-256 fc2e095e20e05c7e04205473c7281cc765039f4d21a895220fb8951af2e85c83

See more details on using hashes here.

File details

Details for the file ctxkit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ctxkit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ctxkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 274db2e82df3eda80bd130138d15f69587c213037c40c38c3bfbbcfb24cee8b9
MD5 ae862651ff8ce98beb181dbbf498cf40
BLAKE2b-256 95e8b89d7e33dd069306eb2b5d45f80d4ff36fa726dd58e56aeb937b790f418c

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