Skip to content

ModeScheduler

An interactive CLI tool for managing action plans for OSA

Builds and manages a task plan for a selected repository. The plan can be:

  • basic — a predefined set of tasks
  • auto — generated by an AI model based on the repository contents
  • advanced — adjusted by the user during CLI execution

The CLI allows user to:

  • View the generated plan
  • Confirm or cancel execution
  • Edit the plan interactively
  • Manage GitHub Actions workflows alongside other tasks

How it works?

Here is a short demo:

Animation


Usage

Run Open-Source-Advisor using the following command:

python -m osa_tool.run -r {repository} [--mode {mode}] [--api {api}] [--base-url {base_url}] [--model {model_name}]

Required Argument

-r, --repository - URL of the repository to be analyzed and processed.

Available Modes

Before starting, the user needs to specify which mode they want to use:

Mode Description
basic Runs a predefined set of actions: generates Report, README, Community docs, About section.
Organize the repository structure by adding standard 'tests' and 'examples' directories if missing.
auto (default) Automatically builds a plan using an AI model based on repository analysis.
advanced Allows the user to manually select and configure which improvements and actions will be applied to the repository.

What Happens Next

Once the CLI command is execute, OSA will:

  1. Analyze the repository
  2. Display informational tables in the console:
    • Repository and environment info - general project details, active configuration
    • Planned actions — a table listing actions and improvements that are scheduled to be applied.
    • Inactive actions — a table showing actions that will not be applied based on the current plan.

Confirming the Action Plan

Do you want to proceed with these actions? [y/n/custom] (y)
  • Enter y or simply press Enter — to accept the proposed plan and continue execution.
  • Enter n — to cancel the operation. The program will immediately exit without making any changes
  • Enter custom — to enter manual editing mode, where user can adjust the plan interactively.

Manual Plan Editing Mode

In custom mode:

  • A list of editable actions is displayed.
  • Available commands:
  • help or ? — displays a table with descriptions of all editable keys.
  • multi-bool — enables batch editing of boolean-type keys.
  • done — finishes the editing session and displays the current plan.
  • To edit an action, enter its name.
  • For each selected action:
  • If it is a boolean value (True/False), a prompt will request setting it to:
    • y — enable
    • n — disable
    • skip — leave unchanged
  • If it is a string or list:
    • A new value can be entered.
    • Leave empty to skip.
    • Enter None to explicitly disable the value.
  • Before entering a new value, the system will display:
    • A short description.
    • Allowed values (if available).
    • An example (if available).
    • The current value.

Once the user type done:

  • The updated tables with planned actions and inactive actions will be displayed again.
  • The program will prompt the user one more time to confirm the updated plan
  • Available options:
  • Confirm with y or Enter
  • Cancel with n
  • Re-enter manual editing mode with custom

This interactive loop continues until the user explicitly confirms or cancels the operation.

This mode allows for precise control over which improvements, documentation, or workflow-related actions will be applied to the repository.

Table of Available Keys

Parameter Aliases Type Description Default Choices
repository -r, --repository str URL of the GitHub repository https://github.com/aimclub/OSA —
mode -m, --mode str Operation mode for repository processing: basic, auto (default), or advanced. auto basic, auto, advanced
branch -b, --branch str Branch name of the GitHub repository null —
based_on_date --based-on-date str Date to analyse the repository as of. It is rolled back to the closest commit, fork and PR creation are disabled null —
output -o, --output str Path to the output directory null —
config_file --config-file str Path to custom configuration file (TOML format) null —
use_single_model --use-single-model flag Use the same model for all tasks (if disabled, use specific models for each task type) true —
api --api str LLM API service provider openai itmo, openai, ollama
base_url --base-url str URL of the service provider. See available urls https://openrouter.ai/api/v1 —
model --model str Specific LLM model to use. See available providers and models gpt-3.5-turbo —
model_docstring --model-docstring str Specific LLM model for docstring generation tasks Temprorary inherited from default model —
model_readme --model-readme str Specific LLM model for README generation tasks Temprorary inherited from default model —
model_repository_quality --model-repository-quality str Specific LLM model for formal repository-quality scoring Inherited from default model —
model_paper_claims --model-paper-claims str Specific LLM model for typed paper claim extraction Inherited from default model —
model_paper_verification --model-paper-verification str Specific LLM model for paper claim verification Inherited from default model —
model_general --model-general str Specific LLM model for general tasks Temprorary inherited from default model —
top_p --top_p str Nucleus sampling probability 0.95 —
temperature --temperature str Sampling temperature to use for the LLM output (0 = deterministic, 1 = creative). 0.05 —
max_tokens --max_tokens str Maximum number of tokens the model can generate in a single response 4096 —
context_window --context_window str Total number of model context (Input + Output) 16385 —
attachment --attachment str Path to a local PDF or .docx file, or a URL to a PDF resource null —
translate_dirs --translate-dirs flag Enable automatic translation of directory names into English false —
convert_notebooks --convert-notebooks list Convert Jupyter notebooks to .py format. Provide paths, or leave empty for repo directory — —
notebook_report --notebook-report list Analyze Jupyter notebooks and generate a notebook PDF report. Provide one or multiple paths, or leave empty for repo directory — —
delete_dir --delete-dir flag Delete the downloaded repository after processing false —
ensure_license --ensure-license str Enable LICENSE file compilation null bsd-3, mit, ap2
no_fork --no-fork flag Do not create a public fork to the target repository false —
no_pull_request --no-pull-request flag Do not create a pull request to the target repository false —
community_docs --community-docs flag Generate community-related documentation files false —
docstring --docstring flag Automatically generate docstrings for Python files false —
report --report flag Analyze the repository and generate a PDF report false —
readme --readme flag Generate a README.md file based on repository content false —
refine_readme --refine-readme flag Enable advanced README refinement. This process requires a powerful LLM model (such as GPT-4 or equivalent) for optimal results false —
requirements --requirements flag Generate or refine a requirements.txt file based on repository content. false —
organize --organize flag Organize the repository with LLM's decision false —
about --about flag Generate About section with tags false —
generate_workflows --generate-workflows flag Generate GitHub Action workflows for the repository false —
workflows_output_dir --workflows-output-dir str Directory where workflow files will be saved .github/workflows —
include_tests --include-tests flag Include unit tests workflow true —
include_black --include-black flag Include Black formatter workflow true —
include_pep8 --include-pep8 flag Include PEP 8 compliance workflow true —
include_autopep8 --include-autopep8 flag Include autopep8 formatter workflow false —
include_fix_pep8 --include-fix-pep8 flag Include fix-pep8 command workflow false —
include_pypi --include-pypi flag Include PyPI publish workflow false —
include_ruff --include-ruff flag Include Ruff linter and formatter workflow false —
use_uv --use-uv flag Use uv instead of pip for dependency installation in workflows false —
python_versions --python-versions list Python versions to test against [3.9, 3.10] —
pep8_tool --pep8-tool str Tool to use for PEP 8 checking flake8 flake8, pylint
use_poetry --use-poetry flag Use Poetry for packaging false —
branches --branches list Branches to trigger workflows on [] —
codecov_token --codecov-token flag Use Codecov token for coverage upload false —
include_codecov --include-codecov flag Include Codecov coverage step in unit tests workflow true —

Note: Enabling both --include-ruff and --include-black generates CI jobs that may produce conflicting formatting results, since Ruff's formatter and Black apply different style rules. Prefer one formatter per project.