makeplane / makeplane/plane

[feature]: support cycles in Compose YAML (currently dropped on plane clone)

Open
#9,004 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Context for this and four related tickets: https://github.com/orgs/makeplane/discussions/8999

I have searched existing issues; no existing report covers this specific gap.

Summary

Compose 0.2.0 doesn't represent cycles -- neither in schema/ nor as a field on work items. plane clone drops cycle definitions (including start / end dates) and per-item cycle memberships silently. Particularly costly for projects with overlapping cycle windows: that's a Plane differentiator that's completely invisible to Compose.

Proposed shape:

# schema/cycles.yaml
- name: Diligence
  start: 2026-05-04
  end: 2026-06-01
- name: Pre-Close
  start: 2026-06-08
  end: 2026-06-29

# work item
- id: PROJ-1
  title: ...
  cycle: Diligence

Bonus: an optional date-shift at clone time (plane clone <uuid> --shift-dates +6mo or similar) would unlock template reuse for projects that recur on a calendar -- release planning, deal pipelines, marketing campaigns, etc. Without it, every clone of a date-bearing template requires manual fixup of every cycle window and every item's start / due date.

Why should this be worked on?

Cycles are the time dimension of a Plane project. Without them, Compose can only describe a static structure, not a phased one. For any project that uses cycles for sprint or phase management -- which is most non-trivial projects in Plane -- the current behavior means the time-phasing layer can't be source-controlled, can't be PR-reviewed when it changes, and can't be templated for reuse.

To reproduce the gap: clone any Plane project that uses cycles (e.g. via plane clone <uuid> --workspace <slug>), then inspect schema/ and .plane/remote/items.yaml. Cycles and per-item cycle membership are absent.

Combined with the modules gap (#9003) and the relations gap (tracked at #6236), supporting cycles in YAML is one of the three structural primitives needed for the projects-as-code thesis to hold up for non-flat projects. Related tickets in the same batch: #9000 (missing CLI commands), #9001 (push is create-only), #9002 (version drift). The discussion thread linked above frames all five as a coherent set.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with plane clone <uuid> --workspace <slug>, then inspect schema/ and .plane/remote/items.yaml. Trace how cycle definitions and per-item cycle memberships are represented or dropped. Done means cycle names, start and end dates, and item memberships survive clone and are represented in Compose YAML.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript, yaml
Domain
cli, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.