github Python analyzed af15715

rlcuevas14/PULSYR

github

Agent-native backlog manager for solo-preneurs. Manage multiple projects with Claude Code via MCP.

maintainer
rlcuevas14
license
MIT
first seen
2026-08-11
last seen
2026-08-27
releases · 30d
0
short id

Drift inferred · capture-to-capture

tool count over time

08-11 12:51 now
26t
26t
capabilities 26 tools
transport counts 26 tools · 0 res · 0 prompts permission surface via README inference

tools

  • pulsyr_advance

    Transition an item's status (lifecycle-validated)

  • pulsyr_areas

    List areas (groupings) with item counts

  • pulsyr_complete

    Mark an item done: reports newly unblocked items

  • pulsyr_context

    Session briefing: quick wins, blockers, unlinked Sentry errors, active threads

  • pulsyr_create

    Create a backlog item; auto-creates the area if needed

  • pulsyr_doc_get

    Read a management document (current or a specific version)

  • pulsyr_doc_list

    List management documents (deliverables) grouped by compartment

  • pulsyr_doc_put

    Create or update a management document (append-only versioning)

  • pulsyr_gantt_get

    Read the project plan (3-level Gantt hierarchy)

  • pulsyr_gantt_task_remove

    Remove a plan task

  • pulsyr_gantt_task_upsert

    Create or update a plan task (the Gantt is edited only via MCP)

  • pulsyr_incident

    Incident detail with stack trace fetched from Sentry

  • pulsyr_incident_resolve

    Resolve an incident in Pulsyr (and optionally in Sentry)

  • pulsyr_incidents

    List Sentry errors in the incident container

  • pulsyr_link

    Add a graph edge between items (blocks / requires / conflicts / related / part_of)

  • pulsyr_list

    Filtered item list (status, type, area, order)

  • pulsyr_move_area

    Move an item to a different area

  • pulsyr_pending_complete

    Mark a pending as done

  • pulsyr_pending_list

    List project pendings (action items) with owner and status

  • pulsyr_pending_upsert

    Create or update a pending

  • pulsyr_search

    Full-text search across backlog items

  • pulsyr_thread

    Thread detail with artifacts and linked items

  • pulsyr_thread_advance

    Advance a Thread to its next stage

  • pulsyr_thread_create

    Create a Thread (funnel for heavy features)

  • pulsyr_thread_link

    Link an existing backlog item to a Thread

  • pulsyr_thread_list

    List Threads, filter by stage or area

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit af15715 · analyzer v33 · 5d ago

skills & prompt files 1

danger signals3

code evidence vv2026.07.17-1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 213

filesystem 19

  • fs rlcuevas14-PULSYR-af15715/app/i18n/__init__.py :14 from pathlib import Path
  • fs rlcuevas14-PULSYR-af15715/app/items/graph.py :133 """Ids of items blocking others that are still open (🔓 badge = unblocker).
  • fs rlcuevas14-PULSYR-af15715/app/items/importer.py :5 from pathlib import Path
  • fs rlcuevas14-PULSYR-af15715/app/items/router.py :3 from pathlib import Path
  • fs rlcuevas14-PULSYR-af15715/app/templates_config.py :4 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/check_analytics_build.py :4 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/check_public_site.py :11 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/check_quality_exceptions.py :9 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/check_site_links.py :10 from pathlib import Path, PurePosixPath
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/export_route_inventory.py :5 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/scripts/web_baseline.py :21 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_error_documents.py :1 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_frontend_assets.py :3 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_i18n.py :9 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_importer.py :1 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_operational_contract.py :1 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_public_site_contract.py :3 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_staging_contract.py :1 from pathlib import Path
  • fs (weak) rlcuevas14-PULSYR-af15715/tests/test_web_security.py :2 from pathlib import Path

network 46

  • net rlcuevas14-PULSYR-af15715/app/ai/llm.py :10 import httpx
  • net rlcuevas14-PULSYR-af15715/app/auth/oauth.py :19 from urllib.parse import urlencode
  • net rlcuevas14-PULSYR-af15715/app/billing/paddle.py :13 import httpx
  • net rlcuevas14-PULSYR-af15715/app/main.py :5 from urllib.parse import urlparse
  • net rlcuevas14-PULSYR-af15715/app/webhooks/service.py :14 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/scripts/check_public_site.py :12 from urllib.parse import urlparse
  • net (weak) rlcuevas14-PULSYR-af15715/scripts/check_site_links.py :11 from urllib.error import HTTPError, URLError
  • net (weak) rlcuevas14-PULSYR-af15715/scripts/web_baseline.py :16 import socket
  • net (weak) rlcuevas14-PULSYR-af15715/tests/conftest.py :4 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_access_and_setup.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_account_integrations.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_backlog_filters.py :10 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_billing_changes.py :6 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_billing_checkout.py :10 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_billing_history.py :12 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_billing_paddle.py :5 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_billing_screen.py :7 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_error_documents.py :3 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_error_paths.py :15 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_flash.py :3 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_health_observability.py :5 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_isolation.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_items.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_items_rest.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_llm.py :2 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_management.py :12 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_management_ui.py :10 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_mcp.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_mcp_tools.py :6 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_metrics.py :6 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_oauth.py :7 import httpx
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_paddle_webhook.py :14 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_private_indexing.py :1 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_project_modules.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_request_boundary.py :5 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_request_context.py :5 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_routes_extra.py :5 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_scopes.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_search.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint0.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint2.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint4.py :4 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint5.py :7 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_ui.py :7 from httpx import AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_web_security.py :5 from httpx import ASGITransport, AsyncClient
  • net (weak) rlcuevas14-PULSYR-af15715/tests/test_webhooks_service.py :207 import httpx

database 83

  • db rlcuevas14-PULSYR-af15715/app/accounts/members.py :4 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/accounts/models.py :4 from sqlalchemy import TIMESTAMP, Boolean, CheckConstraint, ForeignKey, String, UniqueConstraint, func
  • db rlcuevas14-PULSYR-af15715/app/accounts/plans.py :15 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/accounts/router.py :5 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/accounts/service.py :5 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/auth/deps.py :6 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/auth/models.py :5 from sqlalchemy import (
  • db rlcuevas14-PULSYR-af15715/app/auth/rate_limit.py :10 from sqlalchemy import delete, text
  • db rlcuevas14-PULSYR-af15715/app/auth/router.py :8 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/auth/service.py :7 from sqlalchemy import func, or_, select, update
  • db rlcuevas14-PULSYR-af15715/app/billing/router.py :16 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/database.py :3 from sqlalchemy import func
  • db rlcuevas14-PULSYR-af15715/app/items/graph.py :10 from sqlalchemy import text
  • db rlcuevas14-PULSYR-af15715/app/items/importer.py :8 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/items/models.py :6 from sqlalchemy import (
  • db rlcuevas14-PULSYR-af15715/app/items/relationships.py :10 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/items/router.py :8 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/items/search.py :15 from sqlalchemy import text
  • db rlcuevas14-PULSYR-af15715/app/items/service.py :11 from sqlalchemy import Select, func, select, text
  • db rlcuevas14-PULSYR-af15715/app/jobs/handlers.py :5 from sqlalchemy import select, text
  • db rlcuevas14-PULSYR-af15715/app/jobs/models.py :6 from sqlalchemy import JSON, TIMESTAMP, CheckConstraint, ForeignKey, Integer, Numeric, String, Text, func
  • db rlcuevas14-PULSYR-af15715/app/jobs/worker.py :5 from sqlalchemy import func, select, text, update
  • db rlcuevas14-PULSYR-af15715/app/main.py :10 from sqlalchemy import text
  • db rlcuevas14-PULSYR-af15715/app/management/models.py :17 from sqlalchemy import (
  • db rlcuevas14-PULSYR-af15715/app/management/router.py :15 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/management/service.py :13 from sqlalchemy import func, or_, select
  • db rlcuevas14-PULSYR-af15715/app/mcp/server.py :17 from sqlalchemy.exc import IntegrityError
  • db rlcuevas14-PULSYR-af15715/app/mcp/tools.py :14 from sqlalchemy import func, select, text
  • db rlcuevas14-PULSYR-af15715/app/metrics.py :8 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/projects/access.py :10 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/projects/deps.py :6 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/projects/models.py :5 from sqlalchemy import (
  • db rlcuevas14-PULSYR-af15715/app/projects/modules.py :11 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/projects/router.py :5 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/projects/service.py :5 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/scopes/models.py :5 from sqlalchemy import TIMESTAMP, Boolean, ForeignKey, Integer, String, UniqueConstraint, func
  • db rlcuevas14-PULSYR-af15715/app/scopes/router.py :5 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/scopes/service.py :6 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/threads/models.py :11 from sqlalchemy import TIMESTAMP, CheckConstraint, ForeignKey, String, Text, func
  • db rlcuevas14-PULSYR-af15715/app/threads/router.py :7 from sqlalchemy import select
  • db rlcuevas14-PULSYR-af15715/app/threads/service.py :5 from sqlalchemy import func, select
  • db rlcuevas14-PULSYR-af15715/app/ui/router.py :8 from sqlalchemy import func, select, text
  • db rlcuevas14-PULSYR-af15715/app/webhooks/connection.py :11 from sqlalchemy import func, or_, select, update
  • db rlcuevas14-PULSYR-af15715/app/webhooks/models.py :7 from sqlalchemy import JSON, TIMESTAMP, CheckConstraint, ForeignKey, Integer, String, Text, func
  • db rlcuevas14-PULSYR-af15715/app/webhooks/router.py :8 from sqlalchemy.ext.asyncio import AsyncSession
  • db rlcuevas14-PULSYR-af15715/app/webhooks/service.py :15 from sqlalchemy import select, text
  • db rlcuevas14-PULSYR-af15715/migrations/env.py :5 from sqlalchemy.ext.asyncio import create_async_engine
  • db rlcuevas14-PULSYR-af15715/migrations/versions/v0001_initial_schema.py :3 import sqlalchemy as sa
  • db (weak) rlcuevas14-PULSYR-af15715/scripts/check_query_budgets.py :11 from sqlalchemy import text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/conftest.py :8 from sqlalchemy import text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_access_and_setup.py :6 from sqlalchemy import text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_account_integrations.py :78 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_auth.py :2 from sqlalchemy.ext.asyncio import AsyncSession
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_backlog_filters.py :90 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_error_paths.py :259 import sqlalchemy as sa
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_graph.py :4 from sqlalchemy.ext.asyncio import async_sessionmaker
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_importer.py :4 from sqlalchemy import func, select, text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_invariants.py :11 from sqlalchemy import text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_isolation.py :131 from sqlalchemy import func, select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_items.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_jobs.py :7 from sqlalchemy import func, select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_management.py :193 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_management_ui.py :11 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_mcp.py :39 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_mcp_parity.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_metrics.py :7 from sqlalchemy import delete
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_oauth.py :9 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_paddle_webhook.py :15 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_plans.py :6 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_project_modules.py :6 from sqlalchemy import delete, func, select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_request_boundary.py :6 from sqlalchemy import text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_routes_extra.py :6 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_search.py :5 from sqlalchemy import select, text
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sentry_connection.py :111 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sentry_webhook_routing.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_services.py :5 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint0.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint1.py :4 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint2.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint4.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_sprint5.py :97 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_ui.py :8 from sqlalchemy import select
  • db (weak) rlcuevas14-PULSYR-af15715/tests/test_webhooks_service.py :89 from sqlalchemy import select

declared dependencies 20

  • fastapi@>=0.115.0
  • uvicorn@>=0.30.0
  • sqlalchemy@>=2.0.30
  • asyncpg@>=0.29.0
  • alembic@>=1.13.0
  • pydantic-settings@>=2.3.0
  • bcrypt@>=4.1.0
  • python-multipart@>=0.0.9
  • jinja2@>=3.1.4
  • markdown-it-py@>=3.0.0
  • pgvector@>=0.3.0
  • httpx@>=0.27.0
  • itsdangerous@>=2.2.0
  • sentry-sdk@>=2.67.1
  • pytest@>=8.2.0
  • pytest-asyncio@>=0.23.0
  • pytest-cov@>=5.0.0
  • testcontainers@>=4.7.0
  • ruff@>=0.5.0
  • mypy@>=1.11.0